From 03f519c9f7608d250c2cc30d1a3914626f8585e9 Mon Sep 17 00:00:00 2001 From: konojunya Date: Sat, 5 Sep 2026 18:12:02 +0900 Subject: [PATCH] Install CLI completion and man page assets --- .github/workflows/ci.yaml | 3 ++- Formula/stack.rb | 25 +++++++++++++++++-------- README.md | 4 ++-- docs/maintaining.md | 2 +- metadata/stack-release.json | 12 ++++++------ scripts/render-stack-formula.rb | 9 +++++++++ scripts/test-formula-lifecycle.sh | 28 ++++++++++++++++++++++++---- 7 files changed, 61 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c12a79b..7247481 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -36,7 +36,8 @@ jobs: env: GH_TOKEN: ${{ github.token }} run: | - scripts/update-stack-formula.sh 0.3.0 + version=$(ruby -rjson -e 'puts JSON.parse(File.read("metadata/stack-release.json")).fetch("version")') + scripts/update-stack-formula.sh "$version" git diff --exit-code -- Formula/stack.rb metadata/stack-release.json - name: Check repository diff diff --git a/Formula/stack.rb b/Formula/stack.rb index b3a430c..e37d2ed 100644 --- a/Formula/stack.rb +++ b/Formula/stack.rb @@ -12,31 +12,35 @@ class Stack < Formula depends_on arch: :arm64 on_arm do - url "https://github.com/stack-sh/cli/releases/download/v0.3.0/stack-v0.3.0-aarch64-apple-darwin.tar.gz" - sha256 "10df35058c9e8438b331b69392f6b9840cbae3a5278105b0118c3942f62fc356" + url "https://github.com/stack-sh/cli/releases/download/v0.4.0/stack-v0.4.0-aarch64-apple-darwin.tar.gz" + sha256 "dd43cf3d966a3dc28de3ac8752b6a98f19e4cb7cf6b04652ab73a013800cb015" end # Let Homebrew load the formula before reporting the ARM64 requirement. on_intel do - url "https://github.com/stack-sh/cli/releases/download/v0.3.0/stack-v0.3.0-x86_64-apple-darwin.tar.gz" - sha256 "23d8eea13ff2663e059b7ec91cbc8d6bca8825380766e87f1718c2dea217a49f" + url "https://github.com/stack-sh/cli/releases/download/v0.4.0/stack-v0.4.0-x86_64-apple-darwin.tar.gz" + sha256 "48a72328fcf6d160a123a766d9701108f8ee9f633001581dab533b93dddf0827" end end on_linux do on_arm do - url "https://github.com/stack-sh/cli/releases/download/v0.3.0/stack-v0.3.0-aarch64-unknown-linux-gnu.tar.gz" - sha256 "2bed2ba5ff4a727646cedb4ec77ac875e09fc3ede996a963022d9a97ccdbf7ac" + url "https://github.com/stack-sh/cli/releases/download/v0.4.0/stack-v0.4.0-aarch64-unknown-linux-gnu.tar.gz" + sha256 "a0d76bfa9ed9e767fcd06dbeb7140234db865440210c7c3abf6c3db4f6983a6e" end on_intel do - url "https://github.com/stack-sh/cli/releases/download/v0.3.0/stack-v0.3.0-x86_64-unknown-linux-gnu.tar.gz" - sha256 "6c9ab21d96fc6fb0a12a6ff4f7f56103d8dd8513ac85c8d30ab6e072c5c6a7d9" + url "https://github.com/stack-sh/cli/releases/download/v0.4.0/stack-v0.4.0-x86_64-unknown-linux-gnu.tar.gz" + sha256 "89d8a34c0da5f67932edff2641fe0a0527afbd120cfd5133cb38cdeffca55319" end end def install bin.install "stack" + bash_completion.install "share/bash-completion/completions/stack" + zsh_completion.install "share/zsh/site-functions/_stack" + fish_completion.install "share/fish/vendor_completions.d/stack.fish" + man1.install "share/man/man1/stack.1" doc.install "LICENSE", "NOTICE", "THIRD_PARTY_LICENSES.md" end @@ -49,5 +53,10 @@ def install assert_path_exists testpath/"diagram.svg" assert_match "/dev/null 2>&1 || true brew install "${formula}" brew test "${formula}" installed_version="$("${brew_prefix}/bin/stack" --version)" -[[ "${installed_version}" == "stack 0.3.0" ]] +[[ "${installed_version}" == "stack ${expected_version}" ]] +managed_files=( + "${brew_prefix}/etc/bash_completion.d/stack" + "${brew_prefix}/share/zsh/site-functions/_stack" + "${brew_prefix}/share/fish/vendor_completions.d/stack.fish" + "${brew_prefix}/share/man/man1/stack.1" +) +for managed_file in "${managed_files[@]}" +do + [[ -s "${managed_file}" ]] +done +"${brew_prefix}/bin/stack" completions bash | cmp "${brew_prefix}/etc/bash_completion.d/stack" - +"${brew_prefix}/bin/stack" completions zsh | cmp "${brew_prefix}/share/zsh/site-functions/_stack" - +"${brew_prefix}/bin/stack" completions fish | cmp "${brew_prefix}/share/fish/vendor_completions.d/stack.fish" - +"${brew_prefix}/bin/stack" manpage | cmp "${brew_prefix}/share/man/man1/stack.1" - cp "${formula_file}" "${formula_backup}" # The Ruby expression must remain literal shell input. # shellcheck disable=SC2016 ruby -0pi -e '$_.sub!(%{ license "Apache-2.0"\n}, %{ license "Apache-2.0"\n revision 1\n})' "${formula_file}" brew upgrade "${formula}" -brew list --versions stack | grep -F '0.3.0_1' >/dev/null +brew list --versions stack | grep -F "${expected_version}_1" >/dev/null upgraded_version="$("${brew_prefix}/bin/stack" --version)" -[[ "${upgraded_version}" == "stack 0.3.0" ]] +[[ "${upgraded_version}" == "stack ${expected_version}" ]] brew uninstall "${formula}" [[ ! -e "${brew_prefix}/bin/stack" ]] +for managed_file in "${managed_files[@]}" +do + [[ ! -e "${managed_file}" ]] +done config_after="$(shasum -a 256 "${XDG_CONFIG_HOME}/stack/config.yaml" | awk '{print $1}')" icon_after="$(shasum -a 256 "${XDG_CONFIG_HOME}/stack/icons/test-provider/marker.txt" | awk '{print $1}')" [[ "${config_after}" == "${config_before}" ]]