Files
runner-images/images/macos/scripts/build/install-xcode-clt.sh
Leon Zandman d6d95ff728 Fixed typos (#9509)
* Fixed some typos.

* Some more typos.

---------

Co-authored-by: Leon Zandman <lzandman@rdw.nl>
2024-03-14 10:53:11 +01:00

52 lines
1.8 KiB
Bash

#!/bin/bash -e -o pipefail
################################################################################
## File: install-xcode-clt.sh
## Desc: Install Xcode Command Line Tools
################################################################################
source ~/utils/utils.sh
is_clt_installed() {
clt_path=$(xcode-select -p 2>&1)
[[ -d $clt_path ]]
}
install_clt() {
echo "Searching online for the Command Line Tools"
# This temporary file prompts the 'softwareupdate' utility to list the Command Line Tools
clt_placeholder="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress"
sudo touch $clt_placeholder
cltPattern="Command Line Tools"
clt_label_command="/usr/sbin/softwareupdate -l |
grep -B 1 -E '${cltPattern}' |
awk -F'*' '/^ *\\*/ {print \$2}' |
sed -e 's/^ *Label: //' -e 's/^ *//' |
sort -V |
tail -n1"
clt_label=$(eval $clt_label_command) || true
if [[ -n "$clt_label" ]]; then
echo "Installing $clt_label"
sudo "/usr/sbin/softwareupdate" "-i" "$clt_label"
fi
sudo "/bin/rm" "-f" "$clt_placeholder"
}
echo "Installing Command Line Tools..."
install_clt
# Retry the installation if tools are not installed from the first attempt
retries=30
sleepInterval=60
while ! is_clt_installed; do
if [[ $retries -eq 0 ]]; then
echo "Unable to find the Command Line Tools, all the attempts exhausted"
exit 1
fi
echo "Command Line Tools not found, trying to install them via software updates, $retries attempts left"
install_clt
((retries--))
echo "Wait $sleepInterval seconds before the next check for installed Command Line Tools"
sleep $sleepInterval
done