#!/bin/bash -e
#
# script/brew_formula_update
# mas
#
# Updates mas Homebrew core formula:
# https://github.com/Homebrew/homebrew-core/blob/master/Formula/mas.rb
#
# brew bump-formula-pr --help
#

BREW_CORE_PATH="$(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula"

function usage {
    echo "Usage: brew_formula_bump [v1.0] [sha1_hash]"
    echo "- version will be inferred using version script if not provided"
    echo "- sha will be inferred from the current commit if not provided"
    exit 1
}

# arg 1 - version tag
if test -n "$1"; then
    VERSION="$1"
else
    VERSION="v$(script/version)"
fi

# arg 2 - revision (commit hash)
if test -n "$2"; then
    REVISION="$2"
else
    REVISION=$(git rev-parse "$VERSION")
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

echo "Checking to see if this update can be a simple bump."
diff "Homebrew/mas.rb" "$BREW_CORE_PATH/mas.rb"

# diff exit status
status=$?
formula_revisions=0
if test $status -ne 0; then
    echo "There are changes in the local formula (Homebrew/mas.rb) that haven't been released yet."
    #exit $status
    formula_revisions=1
fi

echo "==> 🧪 Updating homebrew-core formula mas ($VERSION, $REVISION)"

echo "Validating formula"
brew bump-formula-pr \
    --tag="$VERSION" \
    --revision="$REVISION" \
    --strict \
    mas

# brew exit status
status=$?
if test $status -ne 0; then
    echo "Formula did not validate using 'brew bump-formula-pr'"
    exit $status
fi

pushd "$BREW_CORE_PATH" || exit 2

echo "Updating formula"
if test $formula_revisions -eq 1; then
    # Options to
    dry_run="--dry-run --write"
fi

brew bump-formula-pr \
    --tag="$VERSION" \
    --revision="$REVISION" \
    --strict \
    --verbose \
    "$dry_run" \
    mas
