diff --git a/plugins/xcode/xcode.plugin.zsh b/plugins/xcode/xcode.plugin.zsh index f80de36d..b3058cef 100644 --- a/plugins/xcode/xcode.plugin.zsh +++ b/plugins/xcode/xcode.plugin.zsh @@ -17,6 +17,35 @@ alias xcb='xcodebuild' alias xcp='xcode-select --print-path' alias xcdd='rm -rf ~/Library/Developer/Xcode/DerivedData/*' + +# "XCode-SELect by Version" - select Xcode by just version number +# Uses naming convention: +# - different versions of Xcode are named Xcode-.app or stored +# in a folder named Xcode- +# - the special version name "-" refers to the "default" Xcode.app with no suffix +function xcselv { + emulate -L zsh + local version=$1 + local apps_dirs apps_dir apps app + apps_dirs=( $HOME/Applications /Applications ) + for apps_dir ($apps_dirs); do + if [[ $version == "-" ]]; then + apps=( $apps_dir/Xcode.app $apps_dir/Xcode/Xcode.app ) + else + apps=( $apps_dir/Xcode-$version.app $apps_dir/Xcode-$version/Xcode.app ) + fi + for app ($apps); do + if [[ -e "$app" ]]; then + echo "selecting Xcode $version: $app" + xcsel "$app" + return + fi + done + done + echo "xcselv: Xcode version $version not found" + return 1 +} + function simulator { local devfolder devfolder="$(xcode-select -p)"