Skip to content

Instantly share code, notes, and snippets.

@beeradmoore
Created December 19, 2021 02:34
Show Gist options
  • Save beeradmoore/df1e657ce0e04a5d55bb368e65ecb379 to your computer and use it in GitHub Desktop.
Save beeradmoore/df1e657ce0e04a5d55bb368e65ecb379 to your computer and use it in GitHub Desktop.
Output of `cat $VM_ASSETS/select-xamarin-sdk-v2.sh` on a macos-11 github action runner (19th Dec 2021)
#!/bin/bash -e -o pipefail
# Select any Xamarin SDK versions as the default ones independently by specifying only those versions that need to be changed.
# Examples:
# 1. Change all versions: $VM_ASSETS/select-xamarin-sdkv-v2.sh --mono=6.12 --ios=14.8 --android=10.2 --mac=7.8
# 2. Change default Mono and iOS only: $VM_ASSETS/select-xamarin-sdkv-v2.sh --mono=6.12 --ios=14.8
# 3. Change default Android only: $VM_ASSETS/select-xamarin-sdkv-v2.sh --android=11.1
get_framework_path() {
case $1 in
--mono) echo '/Library/Frameworks/Mono.framework/Versions' ;;
--ios) echo '/Library/Frameworks/Xamarin.iOS.framework/Versions' ;;
--android) echo '/Library/Frameworks/Xamarin.Android.framework/Versions' ;;
--mac) echo '/Library/Frameworks/Xamarin.Mac.framework/Versions' ;;
*) ;;
esac
}
change_framework_version() {
local framework=$1
local version=$2
echo "Select $framework $version"
local countDigit=$(echo "${version}" | grep -o "\." | grep -c "\.")
if [[ countDigit -gt 1 ]]; then
Warning: "[WARNING] It is not recommended to specify the exact framework version because your build can be broken with the next patch update. Consider using "major.minor" only format."
fi
local framework_path=$(get_framework_path "$framework")
if [ -d "${framework_path}/${version}" ]; then
sudo rm -f "${framework_path}/Current"
sudo ln -s "${framework_path}/${version}" "${framework_path}/Current"
else
echo "Invalid framework version ${framework_path}/${version}"
exit 1
fi
}
for arg in "$@"; do
key=$(echo $arg | cut -f1 -d=)
value=$(echo $arg | cut -f2 -d=)
case $key in
--mono | --ios | --android | --mac) change_framework_version $key $value ;;
*)
echo "Invalid parameter <${key}>"
exit 1
;;
esac
done
@beeradmoore
Copy link
Author

For reference here is the directory structure of each framework paths. I thought 6_12_11 meant mono 6.12.11, but this actually means is it aligns with everything on the row of the 6_12_11 in the Xamarin bundles table. In theory if you past Latest to this script it should always grab the highest row on the table.

/Library/Frameworks/Mono.framework/Versions/

6.12 -> /Library/Frameworks/Mono.framework/Versions/6.12.0
6.12.0
6_12_0 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_1 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_10 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_11 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_2 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_3 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_4 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_5 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_6 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_7 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_8 -> /Library/Frameworks/Mono.framework/Versions/6.12
6_12_9 -> /Library/Frameworks/Mono.framework/Versions/6.12
Current -> /Library/Frameworks/Mono.framework/Versions/6_12_10
Latest -> /Library/Frameworks/Mono.framework/Versions/6_12_11

/Library/Frameworks/Xamarin.iOS.framework/Versions/

13.20 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/13.20.2.2
13.20.2.2
14.0 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.0.0.0
14.0.0.0
14.10 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.10.0.4
14.10.0.4
14.14 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.14.2.5
14.14.2.5
14.16 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.16.0.5
14.16.0.5
14.2 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12
14.2.0.12
14.20 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.20.0.24
14.20.0.24
14.4 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.4.1.3
14.4.1.3
14.6 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15
14.6.0.15
14.8 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.8.0.3
14.8.0.3
15.0 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/15.0.0.6
15.0.0.6
15.2 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.17
15.2.0.17
6_12_0 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/13.20
6_12_1 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.0
6_12_10 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/15.0
6_12_11 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/15.2
6_12_2 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2
6_12_3 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.4
6_12_4 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.6
6_12_5 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.8
6_12_6 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.10
6_12_7 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.14
6_12_8 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.16
6_12_9 -> /Library/Frameworks/Xamarin.iOS.framework/Versions/14.20
Current -> /Library/Frameworks/Xamarin.iOS.framework/Versions/6_12_10
Latest -> /Library/Frameworks/Xamarin.iOS.framework/Versions/6_12_11

/Library/Frameworks/Xamarin.Android.framework/Versions/

11.0 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.0.2.0
11.0.2.0
11.1 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.1.0.26
11.1.0.26
11.2 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.2.2.1
11.2.2.1
11.3 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.3.0.4
11.3.0.4
12.0 -> /Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3
12.0.0.3
6_12_0 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.0
6_12_1 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.0
6_12_10 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.3
6_12_11 -> /Library/Frameworks/Xamarin.Android.framework/Versions/12.0
6_12_2 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.0
6_12_3 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.1
6_12_4 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.1
6_12_5 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.1
6_12_6 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.1
6_12_7 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.2
6_12_8 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.2
6_12_9 -> /Library/Frameworks/Xamarin.Android.framework/Versions/11.3
Current -> /Library/Frameworks/Xamarin.Android.framework/Versions/6_12_10
Latest -> /Library/Frameworks/Xamarin.Android.framework/Versions/6_12_11

/Library/Frameworks/Xamarin.Mac.framework/Versions/

6.20 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.20.2.2
6.20.2.2
6.22 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.22.1.26
6.22.1.26
6_12_0 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.20
6_12_1 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.20
6_12_10 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.14
6_12_11 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/8.2
6_12_2 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.20
6_12_3 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6.22
6_12_4 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.0
6_12_5 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.2
6_12_6 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.4
6_12_7 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.8
6_12_8 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.10
6_12_9 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.14
7.0 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.0.0.15
7.0.0.15
7.10 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.10.0.5
7.10.0.5
7.14 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.14.0.27
7.14.0.27
7.2 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.2.0.3
7.2.0.3
7.4 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.4.0.10
7.4.0.10
7.8 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/7.8.2.5
7.8.2.5
8.2 -> /Library/Frameworks/Xamarin.Mac.framework/Versions/8.2.0.17
8.2.0.17
Current -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6_12_10
Latest -> /Library/Frameworks/Xamarin.Mac.framework/Versions/6_12_11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment