@@ -99,25 +99,84 @@ jobs:
9999
100100 steps :
101101 - uses : actions/checkout@v4
102+ with :
103+ ref : main
102104
103105 - name : Get tag version
104106 id : tag
105- run : echo "version=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
107+ run : |
108+ version="${GITHUB_REF#refs/tags/}"
109+ echo "version=$version" >> "$GITHUB_OUTPUT"
110+ echo "version_number=${version#v}" >> "$GITHUB_OUTPUT"
106111
107- - name : Download macOS arm64 tarball and compute SHA
112+ - name : Download release tarballs and compute SHAs
108113 id : sha
109114 run : |
110- url="https://github.com/${{ github.repository }}/releases/download/${{ steps.tag.outputs.version }}/taskboard-darwin-arm64.tar.gz"
111- curl -sL "$url" -o taskboard.tar.gz
112- sha=$(shasum -a 256 taskboard.tar.gz | awk '{print $1}')
113- echo "sha256=$sha" >> "$GITHUB_OUTPUT"
114- echo "url=$url" >> "$GITHUB_OUTPUT"
115+ base_url="https://github.com/${{ github.repository }}/releases/download/${{ steps.tag.outputs.version }}"
116+ for arch in darwin-arm64 darwin-amd64 linux-arm64 linux-amd64; do
117+ curl -sL --retry 3 "$base_url/taskboard-${arch}.tar.gz" -o "taskboard-${arch}.tar.gz"
118+ sha=$(sha256sum "taskboard-${arch}.tar.gz" | awk '{print $1}')
119+ key=$(echo "$arch" | tr '-' '_')
120+ echo "sha256_${key}=$sha" >> "$GITHUB_OUTPUT"
121+ done
115122
116- - name : Update Homebrew formula
123+ - name : Generate Homebrew formula
124+ env :
125+ SHA_DARWIN_ARM64 : ${{ steps.sha.outputs.sha256_darwin_arm64 }}
126+ SHA_DARWIN_AMD64 : ${{ steps.sha.outputs.sha256_darwin_amd64 }}
127+ SHA_LINUX_ARM64 : ${{ steps.sha.outputs.sha256_linux_arm64 }}
128+ SHA_LINUX_AMD64 : ${{ steps.sha.outputs.sha256_linux_amd64 }}
129+ VERSION : ${{ steps.tag.outputs.version_number }}
117130 run : |
118- sed -i "s|url \".*\"|url \"${{ steps.sha.outputs.url }}\"|" Formula/taskboard.rb
119- sed -i "s|sha256 \".*\"|sha256 \"${{ steps.sha.outputs.sha256 }}\"|" Formula/taskboard.rb
120- sed -i "s|version \".*\"|version \"${{ steps.tag.outputs.version#v }}\"|" Formula/taskboard.rb
131+ envsubst << 'EOF' > Formula/taskboard.rb
132+ class Taskboard < Formula
133+ desc "Local project management with Kanban UI and MCP server for AI assistants"
134+ homepage "https://github.com/tcarac/taskboard"
135+ version "${VERSION}"
136+ license "MIT"
137+
138+ on_macos do
139+ if Hardware::CPU.arm?
140+ url "https://github.com/tcarac/taskboard/releases/download/v#{version}/taskboard-darwin-arm64.tar.gz"
141+ sha256 "${SHA_DARWIN_ARM64}"
142+ elsif Hardware::CPU.intel?
143+ url "https://github.com/tcarac/taskboard/releases/download/v#{version}/taskboard-darwin-amd64.tar.gz"
144+ sha256 "${SHA_DARWIN_AMD64}"
145+ end
146+ end
147+
148+ on_linux do
149+ if Hardware::CPU.arm?
150+ url "https://github.com/tcarac/taskboard/releases/download/v#{version}/taskboard-linux-arm64.tar.gz"
151+ sha256 "${SHA_LINUX_ARM64}"
152+ elsif Hardware::CPU.intel?
153+ url "https://github.com/tcarac/taskboard/releases/download/v#{version}/taskboard-linux-amd64.tar.gz"
154+ sha256 "${SHA_LINUX_AMD64}"
155+ end
156+ end
157+
158+ def install
159+ if OS.mac?
160+ if Hardware::CPU.arm?
161+ bin.install "taskboard-darwin-arm64" => "taskboard"
162+ else
163+ bin.install "taskboard-darwin-amd64" => "taskboard"
164+ end
165+ elsif OS.linux?
166+ if Hardware::CPU.arm?
167+ bin.install "taskboard-linux-arm64" => "taskboard"
168+ else
169+ bin.install "taskboard-linux-amd64" => "taskboard"
170+ end
171+ end
172+ end
173+
174+ test do
175+ assert_match "taskboard", shell_output("#{bin}/taskboard --help")
176+ end
177+ end
178+ EOF
179+ sed -i 's/^ //' Formula/taskboard.rb
121180
122181 - name : Commit updated formula
123182 uses : stefanzweifel/git-auto-commit-action@v5
0 commit comments