#!/bin/bash # # Copyright 2018-present The Material Components for iOS Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. version_as_number() { padded_version="${1%.}" # Strip any trailing dots # Pad with .0 until we get a M.m.p version string. while [ $(grep -o "\." <<< "$padded_version" | wc -l) -lt "2" ]; do padded_version=${padded_version}.0 done echo "${padded_version//.}" } # xcode-select's the provided xcode version. # Usage example: # select_xcode 9.2.0 select_xcode() { desired_version="$1" if [ -z "$desired_version" ]; then return # No Xcode version to select. fi xcodes=$(ls /Applications/ | grep "Xcode") for xcode_path in $xcodes; do xcode_version=$(cat /Applications/$xcode_path/Contents/version.plist \ | grep "CFBundleShortVersionString" -A1 \ | grep string \ | cut -d'>' -f2 \ | cut -d'<' -f1) xcode_version_as_number="$(version_as_number $xcode_version)" if [ "$xcode_version_as_number" -ne "$(version_as_number $desired_version)" ]; then continue fi sudo xcode-select --switch /Applications/$xcode_path/Contents/Developer xcodebuild -version # Resolves the following crash when switching Xcode versions: # "Failed to locate a valid instance of CoreSimulatorService in the bootstrap" launchctl remove com.apple.CoreSimulator.CoreSimulatorService || true break done }