Files
fil/scripts/publish/update-homebrew-formula.sh
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

67 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Update Formula/kreuzberg.rb in the homebrew-tap with the new tag's URL and
# source-tarball SHA256. The bottle DSL is updated separately by the
# `homebrew-merge-bottles@v1` action after bottles are built.
#
# Usage (env vars):
# TAG=v5.0.0-rc.2 VERSION=5.0.0-rc.2 \
# TAP_DIR=/path/to/homebrew-tap \
# ./update-homebrew-formula.sh
tag="${TAG:?TAG is required (e.g. v5.0.0-rc.2)}"
version="${VERSION:?VERSION is required (e.g. 5.0.0-rc.2)}"
tap_dir="${TAP_DIR:?TAP_DIR is required (path to homebrew-tap checkout)}"
dry_run="${DRY_RUN:-false}"
formula="${tap_dir}/Formula/kreuzberg.rb"
[[ -f "$formula" ]] || {
echo "Missing $formula" >&2
exit 1
}
tarball_url="https://github.com/kreuzberg-dev/kreuzberg/archive/${tag}.tar.gz"
echo "Updating Homebrew formula for kreuzberg ${version} (tag ${tag})"
if [[ "$dry_run" == "true" ]]; then
echo "[dry-run] target formula: $formula"
echo "[dry-run] would set url to: $tarball_url"
echo "[dry-run] would compute sha256 of source tarball and rewrite the formula"
echo "[dry-run] would leave bottle DSL untouched (handled by homebrew-merge-bottles)"
exit 0
fi
echo "Fetching source tarball SHA256 for ${tag}..."
sha256=$(curl -fsSL "$tarball_url" | shasum -a 256 | awk '{print $1}')
echo " url: $tarball_url"
echo " sha256: $sha256"
# Update the top-level url + sha256 lines (the ones outside `bottle do ... end`).
# Match `url "..."` on one line, `sha256 "..."` on the next, only when both come
# before the `bottle do` block.
python3 - "$formula" "$tarball_url" "$sha256" <<'PY'
import re
import sys
formula_path, new_url, new_sha = sys.argv[1], sys.argv[2], sys.argv[3]
text = open(formula_path).read()
# Split off the bottle block so the regex only touches the formula header.
bottle_start = text.find("bottle do")
if bottle_start == -1:
head, tail = text, ""
else:
head, tail = text[:bottle_start], text[bottle_start:]
head = re.sub(r'^(\s*url\s+)"[^"]*"', rf'\1"{new_url}"', head, count=1, flags=re.MULTILINE)
head = re.sub(r'^(\s*sha256\s+)"[^"]*"', rf'\1"{new_sha}"', head, count=1, flags=re.MULTILINE)
with open(formula_path, "w") as f:
f.write(head + tail)
PY
echo "Updated $formula"