#!/bin/bash -e
#
# script/bottle
# mas
#
# Builds bottles of mas Homebrew formula for custom tap:
# https://github.com/mas-cli/homebrew-tap
#

################################################################################
#
# Variables
#

BUILD_DIR="$PWD/.build"
BOTTLE_DIR="$BUILD_DIR/bottles"
VERSION=$(script/version)
ROOT_URL="https://dl.bintray.com/phatblat/mas-bottles"

# Supports macOS versions 11 (arm64 & x86_64), 10.15, 10.14, 10.13, 10.12, 10.11
OS_NAMES=(arm64_big_sur big_sur catalina mojave high_sierra sierra el_capitan)

# Semantic version number split into a list using  Ugly, bash 3 compatible syntax
IFS=" " read -r -a CURRENT_OS_VERSION <<<"$(sw_vers -productVersion | sed 's/\./ /g'))"
CURRENT_OS_VERSION_MAJOR=${CURRENT_OS_VERSION[0]}
CURRENT_OS_VERSION_MINOR=${CURRENT_OS_VERSION[1]}

echo "CURRENT_OS_VERSION_MAJOR: $CURRENT_OS_VERSION_MAJOR"
echo "CURRENT_OS_VERSION_MINOR: $CURRENT_OS_VERSION_MINOR"

if [[ ${CURRENT_OS_VERSION_MAJOR} == "11" ]]; then
  # Big Sur
  if [[ "x86_64" == "$(uname -m)" ]]; then
    CURRENT_PLATFORM=big_sur
  else
    CURRENT_PLATFORM=arm64_big_sur
  fi
elif [[ ${CURRENT_OS_VERSION_MAJOR} == "10" && ${CURRENT_OS_VERSION_MINOR} == "15" ]]; then
  CURRENT_PLATFORM=catalina
else
  echo "Unsupported macOS version. This script requires Catalina or better."
  exit 1
fi

echo "CURRENT_PLATFORM: ${CURRENT_PLATFORM}"

# Output filename from build-bottle command
OLD_FILENAME="mas--${VERSION}.${CURRENT_PLATFORM}.bottle.tar.gz"

################################################################################
#
# Preflight checks
#

# 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
if brew ls --versions mas >/dev/null; then
  brew unlink mas
fi

# Uninstall if still found on path
if command -v mas >/dev/null; then
  script/uninstall || true # ignore failure
fi

################################################################################
#
# Build the formula for the current macOS version and architecture.
#

echo "==> 🍼 Bottling mas ${VERSION} for: ${OS_NAMES[*]}"
brew install --build-bottle mas

# Generate bottle do block, dropping last 2 lines
brew bottle --verbose --no-rebuild --root-url=$ROOT_URL mas
SHA256=$(shasum --algorithm 256 "${OLD_FILENAME}" | cut -f 1 -d ' ' -)

mkdir -p "$BOTTLE_DIR"

# Start of bottle block
BOTTLE_BLOCK=$(
  cat <<-EOF
bottle do
  root_url "$ROOT_URL"
EOF
)

################################################################################
#
# Copy the bottle for all macOS version + architecture combinations.
#

# Fix filename
for os in ${OS_NAMES[*]}; do
  new_filename="mas-${VERSION}.${os}.bottle.tar.gz"
  cp -v "${OLD_FILENAME}" "${BOTTLE_DIR}/${new_filename}"

  # 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"
EOF
  )
done

# End of bottle block
BOTTLE_BLOCK=$(
  cat <<-EOF

end
EOF
)

rm "${OLD_FILENAME}"
ls -l "${BOTTLE_DIR}"
echo "${BOTTLE_BLOCK}"
