mas/script/bottle

109 lines
2.8 KiB
Text
Raw Normal View History

2019-01-13 00:15:46 -07:00
#!/bin/bash -e
#
# script/bottle
# mas
#
# Builds bottles of mas Homebrew formula for custom tap:
# https://github.com/mas-cli/homebrew-tap
2019-01-13 00:15:46 -07:00
#
2021-03-20 11:27:05 -07:00
################################################################################
#
# Variables
#
2019-01-13 00:48:55 -07:00
BUILD_DIR="$PWD/build"
BOTTLE_DIR="$BUILD_DIR/bottles"
VERSION=$(script/version)
ROOT_URL="https://dl.bintray.com/phatblat/mas-bottles"
2021-03-20 11:27:05 -07:00
2021-03-20 12:15:19 -07:00
# Supports macOS versions 11.0 (arm64 & x86_64), 10.15, 10.14, 10.13, 10.12, 10.11
2021-03-28 20:05:00 -07:00
OS_VERSIONS=(arm64_big_sur big_sur catalina mojave high_sierra sierra el_capitan)
2021-03-28 21:13:59 -07:00
if [[ "x86_64" == "$(uname -m)" ]]; then
2021-03-28 20:05:00 -07:00
CURRENT_PLATFORM=big_sur
else
CURRENT_PLATFORM=arm64_big_sur
fi
2021-03-20 11:27:05 -07:00
# Output filename from build-bottle command
2021-03-28 20:05:00 -07:00
OLD_FILENAME="mas--${VERSION}.${CURRENT_PLATFORM}.bottle.tar.gz"
2019-01-13 00:15:46 -07:00
2021-03-20 11:27:05 -07:00
################################################################################
#
# Preflight checks
#
2019-01-13 00:15:46 -07:00
# Ensure core formula isn't shadowed by custom tap
brew tap --list-pinned | grep mas-cli/tap && brew tap-unpin mas-cli/tap
# Uninstall if necessary
2021-03-21 16:50:09 -07:00
if brew ls --versions mas >/dev/null; then
2021-03-28 20:05:00 -07:00
brew unlink mas
2019-01-13 00:15:46 -07:00
fi
# Uninstall if still found on path
2021-03-21 16:50:09 -07:00
if command -v mas >/dev/null; then
script/uninstall || true # ignore failure
fi
# Purge the Carthage cache to avoid this error from Homebrew sandboxing:
# A shell task (/usr/bin/env git checkout --quiet --force 0.15.0 (launched in /Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant)) failed with exit code 128:
# fatal: Unable to create '/Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant/./index.lock': Operation not permitted
rm -rf ~/Library/Caches/org.carthage.CarthageKit
2021-03-20 11:27:05 -07:00
################################################################################
#
# Build the formula for the current macOS version and architecture.
#
2021-03-20 12:11:38 -07:00
echo "==> 🍼 Bottling mas ${VERSION} for: ${OS_VERSIONS[*]}"
2021-03-28 20:05:00 -07:00
echo "CURRENT_PLATFORM: ${CURRENT_PLATFORM}"
2019-01-13 00:15:46 -07:00
brew install --build-bottle mas
# Generate bottle do block, dropping last 2 lines
brew bottle --verbose --no-rebuild --root-url=$ROOT_URL mas
2021-03-20 12:11:38 -07:00
SHA256=$(shasum --algorithm 256 "${OLD_FILENAME}" | cut -f 1 -d ' ' -)
2019-01-13 00:48:55 -07:00
mkdir -p "$BOTTLE_DIR"
# Start of bottle block
2021-03-21 16:50:09 -07:00
BOTTLE_BLOCK=$(
cat <<-EOF
2021-03-20 12:11:38 -07:00
bottle do
root_url "$ROOT_URL"
2021-03-20 11:27:05 -07:00
EOF
)
2021-03-20 11:27:05 -07:00
################################################################################
#
# Copy the bottle for all macOS version + architecture combinations.
#
2019-01-13 00:48:55 -07:00
# Fix filename
for os in ${OS_VERSIONS[*]}; do
2021-03-21 16:50:09 -07:00
new_filename="mas-${VERSION}.${os}.bottle.tar.gz"
cp -v "${OLD_FILENAME}" "${BOTTLE_DIR}/${new_filename}"
2021-03-21 16:50:09 -07:00
# Append each os
# BOTTLE_BLOCK="$(printf "${BOTTLE_BLOCK}\n sha256 cellar: :any, %-15s %s" "${os}:" "${SHA256}")"
BOTTLE_BLOCK="$BOTTLE_BLOCK"$(
cat <<-EOF
sha256 cellar: :any, $os: "$SHA256"
2021-03-20 11:27:05 -07:00
EOF
2021-03-21 16:50:09 -07:00
)
2019-01-13 00:48:55 -07:00
done
# End of bottle block
2021-03-21 16:50:09 -07:00
BOTTLE_BLOCK=$(
cat <<-EOF
2021-03-20 12:11:38 -07:00
end
2021-03-20 11:27:05 -07:00
EOF
)
2021-03-20 12:11:38 -07:00
rm "${OLD_FILENAME}"
ls -l "${BOTTLE_DIR}"
echo "${BOTTLE_BLOCK}"