mas/script/version_bump
2024-11-03 13:43:21 -07:00

61 lines
1.4 KiB
Bash
Executable file

#!/bin/bash -eu
#
# script/version_bump
# mas
#
# Increments the marketing version of mas.
#
mas_dir="$(readlink -fn "$(dirname "${BASH_SOURCE:-"${0}"}")/..")"
if ! cd -- "${mas_dir}"; then
printf $'Error: Could not cd into mas directory: %s\n' "${mas_dir}" >&2
exit 1
fi
LOCAL_MAS_FORMULA_PATH="Homebrew/mas.rb"
LOCAL_TAP_FORMULA_PATH="Homebrew/mas-tap.rb"
SWIFT_PACKAGE="Sources/mas/Package.swift"
function usage {
echo "Usage: version_bump v0.0 [sha1_hash]"
echo "- existing tag name"
echo "- sha will be inferred from the given tag if not provided"
exit 1
}
if [[ $# -lt 1 ]]; then
usage
fi
# arg 1 - version tag
MAS_VERSION="${1}"
# arg 2 - revision (commit hash)
if [[ "${#}" -ge 2 ]]; then
REVISION="${2}"
else
REVISION=$(git rev-parse "${MAS_VERSION}")
fi
echo "MAS_VERSION: ${MAS_VERSION}"
echo "REVISION: ${REVISION}"
# Write new version into swift package
cat <<EOF >"${SWIFT_PACKAGE}"
/// Generated by \`script/version_bump\`.
enum Package {
static let version = "${MAS_VERSION#v}"
}
EOF
echo
cat "${SWIFT_PACKAGE}"
# Write new version into brew formulae
for file in ${LOCAL_MAS_FORMULA_PATH} ${LOCAL_TAP_FORMULA_PATH}; do
echo "${file}"
sd '( +tag: +)"[^"]+"' "\$1\"${MAS_VERSION}\"" "${file}"
sd '( +revision: +)"[^"]+"' "\$1\"${REVISION}\"" "${file}"
sd '( +root_url "https://github.com/mas-cli/mas/releases/download/).+' "\${1}${MAS_VERSION}\"" "${file}"
done