#!/bin/bash export setCmd="set -eo pipefail" $setCmd export PATH=/opt/MonkeyDev/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH export scriptName="${0##*/}" export scriptVer="2.0" export MonkeyDevPath="/opt/MonkeyDev" export backupFileExt=".MonkeyDev" export userName="${SUDO_USER-$USER}" export userGroup=`id -g $userName` export userHome=`eval echo ~$userName` export bashProfileFiles=("$userHome/.zshrc" "$userHome/.bash_profile" "$userHome/.bashrc" "$userHome/.bash_login" "$userHome/.profile") export tempDirsFile="`mktemp -d -t $scriptName`/tempdirs" touch "$tempDirsFile" unset LANG function cleanup() { local exitCode=$? set +e trap - $signals removeTempData exit $exitCode } function panic() { local exitCode=$1 set +e shift [[ "$@" == "" ]] || echo "$@" >&2 exit $exitCode } export signals="0 1 2 3 15" trap cleanup $signals function removeTempData() { local tempDirs if [[ -f "$tempDirsFile" ]]; then tempDirs=(`cat "$tempDirsFile"`) for td in "${tempDirs[@]}"; do rm -rf "$td" || true done rm -rf "`dirname $tempDirsFile`" || true fi } function copyFile() { cp -f "$1" "$2" || \ panic $? "Failed to copy file $1 to $2" } #还原文件 function restoreFile() { local filePath="$1" local backedUpFilePath="${filePath}${backupFileExt}" if [[ -f "$backedUpFilePath" ]]; then copyFile "$backedUpFilePath" "$filePath" rm -f "$backedUpFilePath" fi } #获取SDK信息 function getSdkProperty() { $setCmd local sdk="$1" local propertyName="$2" propertyValue=`xcodebuild -version -sdk $sdk $propertyName` || \ panic $? "Failed to get $sdk SDK property $propertyName" [[ $propertyValue != "" ]] || \ panic 1 "Value of $sdk SDK property $propertyName cannot be empty" # return # echo "$propertyValue" } echo "Uninstalling MonkeyDev base, Xcode templates and framework header files..." #删除文件夹 rm -rf "$MonkeyDevPath" || \ panic $? "Failed to remove directory: $MonkeyDevPath" #移除模块符号链接 userDevDir="$userHome/Library/Developer" userTemplatesDir="$userDevDir/Xcode/Templates" symlinkPath="$userTemplatesDir/MonkeyDev" rm -f "$symlinkPath" || \ panic $? "Failed to remove file: $symlinkPath" #移除profile环境变量 for f in "${bashProfileFiles[@]}"; do if [[ -f "$f" ]]; then userBashProfileFile="$f" break fi done if [[ $userBashProfileFile != "" ]]; then sed -i "" "s/^export MonkeyDevPath=.*$//g" "$userBashProfileFile" sed -i "" "s/^export MonkeyDevDeviceIP=.*$//g" "$userBashProfileFile" sed -i "" "s/^export PATH=.*${MonkeyDevPath//\//\\/}\\/bin:.*$//g" "$userBashProfileFile" sed -i "" "s/^export PATH=.*\$MonkeyDevPath\\/bin:.*$//g" "$userBashProfileFile" fi iosSdkPlatformPath=`getSdkProperty iphoneos PlatformPath` specificationFile=$(cd $iosSdkPlatformPath/../../.. && pwd)/PlugIns/IDEiOSSupportCore.ideplugin/Contents/Resources/Embedded-Device.xcspec #还原文件 restoreFile "$specificationFile" exit 0