diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b83f3c4..c66d196 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -66,6 +66,9 @@ jobs: - name: Build run: go build -v ./... + - name: Verify Homebrew formula renderer + run: bash test/render_homebrew_formula.sh + - name: Verify GoReleaser config uses: goreleaser/goreleaser-action@v6 with: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 88ffed3..65e03a1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -46,6 +46,8 @@ jobs: run: | echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT" + echo "commit=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" + echo "date=$(git show -s --format=%cI HEAD)" >> "$GITHUB_OUTPUT" echo "tarball_url=https://github.com/laggu/git-volume/archive/refs/tags/${GITHUB_REF_NAME}.tar.gz" >> "$GITHUB_OUTPUT" - name: Download source tarball @@ -70,6 +72,8 @@ jobs: scripts/render-homebrew-formula.sh \ "${{ steps.meta.outputs.version }}" \ "${{ steps.checksum.outputs.sha256 }}" \ + "${{ steps.meta.outputs.commit }}" \ + "${{ steps.meta.outputs.date }}" \ "homebrew-tap/Formula/git-volume.rb" rm -f homebrew-tap/Casks/.gitkeep diff --git a/scripts/render-homebrew-formula.sh b/scripts/render-homebrew-formula.sh index c9bacb8..26cd8ec 100755 --- a/scripts/render-homebrew-formula.sh +++ b/scripts/render-homebrew-formula.sh @@ -5,7 +5,9 @@ set -euo pipefail VERSION="${1:?version is required}" VERSION="${VERSION#v}" SHA256="${2:?sha256 is required}" -OUTPUT="${3:?output path is required}" +COMMIT="${3:?commit is required}" +DATE="${4:?date is required}" +OUTPUT="${5:?output path is required}" mkdir -p "$(dirname "$OUTPUT")" @@ -20,13 +22,22 @@ class GitVolume < Formula depends_on "go" => :build def install - ldflags = "-s -w -X github.com/laggu/git-volume/cmd.version=#{version}" + ldflags = [ + "-s -w", + "-X github.com/laggu/git-volume/cmd.version=#{version}", + "-X github.com/laggu/git-volume/cmd.commit=${COMMIT}", + "-X github.com/laggu/git-volume/cmd.date=${DATE}", + ].join(" ") system "go", "build", *std_go_args(ldflags: ldflags) end test do - assert_match version.to_s, shell_output("#{bin}/git-volume version") + output = shell_output("#{bin}/git-volume version") + + assert_includes output, version.to_s + assert_includes output, "commit: ${COMMIT}" + assert_includes output, "built: ${DATE}" end end EOF diff --git a/test/render_homebrew_formula.sh b/test/render_homebrew_formula.sh new file mode 100755 index 0000000..49336de --- /dev/null +++ b/test/render_homebrew_formula.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" +OUTPUT_DIR="$(mktemp -d)" +OUTPUT_FILE="${OUTPUT_DIR}/git-volume.rb" +VERSION="0.3.1" +SHA256="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" +COMMIT="27836373d30ec5d4b20eaba0fcb32197c13eee4a" +DATE="2026-04-05T02:26:42+09:00" + +cleanup() { + rm -rf "${OUTPUT_DIR}" +} +trap cleanup EXIT + +"${PROJECT_ROOT}/scripts/render-homebrew-formula.sh" \ + "${VERSION}" \ + "${SHA256}" \ + "${COMMIT}" \ + "${DATE}" \ + "${OUTPUT_FILE}" + +grep -F 'url "https://github.com/laggu/git-volume/archive/refs/tags/v0.3.1.tar.gz"' "${OUTPUT_FILE}" +grep -F 'sha256 "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"' "${OUTPUT_FILE}" +grep -F -- '-X github.com/laggu/git-volume/cmd.version=#{version}' "${OUTPUT_FILE}" +grep -F -- "-X github.com/laggu/git-volume/cmd.commit=${COMMIT}" "${OUTPUT_FILE}" +grep -F -- "-X github.com/laggu/git-volume/cmd.date=${DATE}" "${OUTPUT_FILE}" +grep -F "assert_includes output, \"commit: ${COMMIT}\"" "${OUTPUT_FILE}" +grep -F "assert_includes output, \"built: ${DATE}\"" "${OUTPUT_FILE}"