1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- if (( ! ${+commands[packagesbuild]} )) {
- autoload -Uz log_group log_info log_status mkcd
- if (( ! ${+commands[curl]} )) {
- log_error 'curl not found. Please install curl.'
- return 2
- }
- if (( ! ${+project_root} )) {
- log_error "'project_root' not set. Please set before running ${0}."
- return 2
- }
- local -a curl_opts=()
- if (( ${+CI} )) {
- curl_opts+=(--show-error --silent)
- } else {
- curl_opts+=(--progress-bar)
- }
- curl_opts+=(--location -O)
- log_group 'Installing Packages.app...'
- local version
- local base_url
- local hash
- IFS=';' read -r version base_url hash <<< \
- "$(jq -r '.tools.packages | {version, baseUrl, hash} | join(";")' buildspec.json)"
- mkdir -p ${project_root}/.deps && pushd ${project_root}/.deps
- curl ${curl_opts} "${base_url}/Packages.dmg"
- local checksum="$(sha256sum Packages.dmg | cut -d " " -f 1)"
- if [[ ${hash} != ${checksum} ]] {
- log_error "Checksum mismatch of Packages.dmg download.
- Expected : ${hash}
- Actual : ${checksum}"
- return 2
- }
- hdiutil attach -readonly -noverify -noautoopen -plist Packages.dmg > .result.plist
- local -i num_entities=$(( $(plutil -extract system-entities raw -- .result.plist) - 1 ))
- local keys
- local mount_point
- for i ({0..${num_entities}}) {
- keys=($(plutil -extract system-entities.${i} raw -- .result.plist))
- if [[ ${keys} == *mount-point* ]] {
- mount_point=$(plutil -extract system-entities.${i}.mount-point raw -- .result.plist)
- break
- }
- }
- rm .result.plist
- log_status 'Installing Packages.app requires elevated privileges!'
- sudo installer -pkg ${mount_point}/packages/Packages.pkg -target / && rehash
- hdiutil detach ${mount_point} &> /dev/null && log_status 'Packages.dmg image unmounted.'
- popd
- log_group
- }
|