🚩 Add dry run support to brew_formula_update

This commit is contained in:
Ben Chatelain 2024-03-10 10:05:36 -06:00
parent 11734da12a
commit d84dd58088
No known key found for this signature in database
2 changed files with 64 additions and 42 deletions

View file

@ -19,18 +19,37 @@ LOCAL_MAS_FORMULA_PATH="${PROJECT_PATH}/Homebrew/mas.rb"
LOCAL_TAP_FORMULA_PATH="${PROJECT_PATH}/Homebrew/mas-tap.rb" LOCAL_TAP_FORMULA_PATH="${PROJECT_PATH}/Homebrew/mas-tap.rb"
function usage { function usage {
echo "Usage: brew_formula_update [0.0] [sha1_hash]" echo "Usage: brew_formula_update [-d] v0.0 [sha1_hash]"
echo "- version will be inferred using version script if not provided" echo " -d option enables dry run mode"
echo "- sha will be inferred from the current commit if not provided" 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 exit 1
} }
# Max 3 arguments
if [[ $# -gt 3 ]]; then if [[ $# -gt 3 ]]; then
usage usage 1>&2
fi fi
echo=''
dry_run=''
# Detect presence of `-d` dry run option
while getopts "d" o; do
case "${o}" in
d)
echo='echo (DRY-RUN):'
dry_run='-d'
;;
*)
usage 1>&2
;;
esac
done
shift $((OPTIND-1))
# arg 1 - version tag # arg 1 - version tag
if test -n "${1}"; then if [[ -n "${1}" ]]; then
MAS_VERSION="${1}" MAS_VERSION="${1}"
else else
MAS_VERSION="v$(script/version)" MAS_VERSION="v$(script/version)"
@ -39,10 +58,15 @@ fi
echo "MAS_VERSION: ${MAS_VERSION}" echo "MAS_VERSION: ${MAS_VERSION}"
# arg 2 - revision (commit hash) # arg 2 - revision (commit hash)
if test -n "${2}"; then if [[ -n "${2}" ]]; then
REVISION="${2}" REVISION="${2}"
else else
REVISION=$(git rev-parse "${MAS_VERSION}") if [[ $dry_run == '-d' ]]; then
REVISION=fake-revision
else
# Derive revision from version. Fails if MAS_VERSION is not a tag.
REVISION=$(git rev-parse "${MAS_VERSION}")
fi
fi fi
echo "REVISION: ${REVISION}" echo "REVISION: ${REVISION}"
@ -54,18 +78,18 @@ echo "REVISION: ${REVISION}"
script/version_bump "${MAS_VERSION}" "$REVISION" script/version_bump "${MAS_VERSION}" "$REVISION"
cp -v "${LOCAL_MAS_FORMULA_PATH}" "${CORE_MAS_FORMULA_PATH}" # cp -v "${LOCAL_MAS_FORMULA_PATH}" "${CORE_MAS_FORMULA_PATH}"
branch_name="releases/release-${MAS_VERSION}" branch_name="releases/release-${MAS_VERSION}"
git branch "${branch_name}" $echo git branch "${branch_name}"
git switch "${branch_name}" $echo git switch "${branch_name}"
git add \ $echo git add \
"${SWIFT_PACKAGE}" \ "${SWIFT_PACKAGE}" \
"${LOCAL_MAS_FORMULA_PATH}" \ "${LOCAL_MAS_FORMULA_PATH}" \
"${LOCAL_TAP_FORMULA_PATH}" "${LOCAL_TAP_FORMULA_PATH}"
git commit --message="🔖 Version ${MAS_VERSION}" $echo git commit --message="🔖 Version ${MAS_VERSION}"
################################################################################ ################################################################################
# #
@ -82,7 +106,7 @@ if command -v mas >/dev/null; then
fi fi
# Ensure core is tapped # Ensure core is tapped
if ! test -d "${CORE_TAP_PATH}"; then if ! [[ -d "${CORE_TAP_PATH}" ]]; then
brew tap homebrew/core brew tap homebrew/core
fi fi
@ -108,36 +132,41 @@ brew style mas-cli/tap/mas
# #
# Update Homebrew # Update Homebrew
# #
echo "Checking to see if this update can be a simple bump."
diff "${LOCAL_MAS_FORMULA_PATH}" "${CORE_MAS_FORMULA_PATH}" # echo "Checking to see if this update can be a simple bump."
# diff "${LOCAL_MAS_FORMULA_PATH}" "${CORE_MAS_FORMULA_PATH}"
echo "==> 🧪 Updating homebrew-core formula mas (${MAS_VERSION}, ${REVISION})" echo "==> 🧪 Updating homebrew-core formula mas (${MAS_VERSION}, ${REVISION})"
if [[ $dry_run == '-d' ]]; then
# -n, --dry-run Print what would be done rather than doing
# it.
# --write-only Make the expected file modifications without
# taking any Git actions.
dry_run="--dry-run"
fi
echo "Validating formula" echo "Validating formula"
brew bump-formula-pr \ brew bump-formula-pr \
--tag="${MAS_VERSION}" \ --tag="${MAS_VERSION}" \
--revision="${REVISION}" \ --revision="${REVISION}" \
--strict \ --strict \
--verbose \ --verbose \
"${dry_run}" \
mas mas
# brew exit status # brew exit status
status=$? status=$?
if test ${status} -ne 0; then if [[ ${status} -ne 0 ]]; then
echo "Formula did not validate using 'brew bump-formula-pr'" echo "Formula did not validate using 'brew bump-formula-pr'"
exit ${status} exit ${status}
fi fi
pushd "${CORE_FORMULA_PATH}" || exit 2 pushd "${CORE_FORMULA_PATH}" || exit 2
dry_run='' echo "Updating homebrew/core formula with a PR"
echo "Updating formula"
# if test $formula_revisions -eq 1; then
# # Options to
# dry_run="--dry-run --write"
# fi
brew bump-formula-pr \ $echo brew bump-formula-pr \
--tag="${MAS_VERSION}" \ --tag="${MAS_VERSION}" \
--revision="${REVISION}" \ --revision="${REVISION}" \
--commit \ --commit \
@ -153,7 +182,7 @@ brew bump-formula-pr \
# Create pr on mas-cli/mas # Create pr on mas-cli/mas
# #
gh pr create \ $echo gh pr create \
--assignee phatblat \ --assignee phatblat \
--base main \ --base main \
--draft \ --draft \

View file

@ -6,8 +6,6 @@
# Increments the marketing version of mas. # Increments the marketing version of mas.
# #
# SCRIPT_PATH=$(dirname "$(which "$0")")
PROJECT_PATH="$(git rev-parse --show-toplevel)" PROJECT_PATH="$(git rev-parse --show-toplevel)"
PACKAGE_MANIFEST="${PROJECT_PATH}/Sources/MasKit/Package.swift" PACKAGE_MANIFEST="${PROJECT_PATH}/Sources/MasKit/Package.swift"
LOCAL_MAS_FORMULA_PATH="${PROJECT_PATH}/Homebrew/mas.rb" LOCAL_MAS_FORMULA_PATH="${PROJECT_PATH}/Homebrew/mas.rb"
@ -24,23 +22,20 @@ if [[ $# -lt 1 ]]; then
usage usage
fi fi
last_tag=$(script/version)
echo "Last git tag: $last_tag"
# arg 1 - version tag # arg 1 - version tag
if test -n "$1"; then if test -n "${1}"; then
MAS_VERSION=$1 MAS_VERSION=${1}
fi fi
# arg 2 - revision (commit hash) # arg 2 - revision (commit hash)
if test -n "$2"; then if test -n "${2}"; then
REVISION="$2" REVISION="${2}"
else else
REVISION=$(git rev-parse "$MAS_VERSION") REVISION=$(git rev-parse "${MAS_VERSION}")
fi fi
echo "MAS_VERSION: $MAS_VERSION" echo "MAS_VERSION: ${MAS_VERSION}"
echo "REVISION: $REVISION" echo "REVISION: ${REVISION}"
# Write new version into swift package # Write new version into swift package
cat <<EOF >"${PACKAGE_MANIFEST}" cat <<EOF >"${PACKAGE_MANIFEST}"
@ -54,11 +49,9 @@ echo
cat "${PACKAGE_MANIFEST}" cat "${PACKAGE_MANIFEST}"
# Write new version into brew formulae # Write new version into brew formulae
for file in $LOCAL_MAS_FORMULA_PATH $LOCAL_TAP_FORMULA_PATH; do for file in ${LOCAL_MAS_FORMULA_PATH} ${LOCAL_TAP_FORMULA_PATH}; do
echo "$file" echo "${file}"
# echo sed -i "5s/(\w+tag:\w+\"\)v[^\"]\",/$0$MAS_VERSION\"/" "$file" sd '( +tag: +)"[^"]+"' "\$1\"${MAS_VERSION}\"" "${file}"
# sed -i '' -E "s/(\w+tag:\w+\")v,/\1$MAS_VERSION\"/" "$file" sd '( +revision: +)"[^"]+"' "\$1\"${REVISION}\"" "${file}"
sd '( +tag: +)"[^"]+"' "\$1\"$MAS_VERSION\"" "$file"
sd '( +revision: +)"[^"]+"' "\$1\"$REVISION\"" "$file"
done done