Homebrew 可以说是 Mac 上必装的命令行工具之一。它真的太好用太方便的。但是你在维护一个 Homebrew Tap 的时候,如果你的程序有新的 Release 发布时,需要在对应的 .rb
文件中修改版本号以及对应的二进制文件的 sha256,这显然会有些繁琐,或者说不太优雅。
我习惯使用 GitHub Action 去交叉编译各种 Release,重要的是 Action 可以帮助我自动发布。其实在每一次 Action 发布之后,可以添加一个 Step,去更新 Casks 或者 Formula 的 .rb
。为了方便,你可以创建一个 .sh
文件来做这件事。
部分代码(以 DeepL X 为例)
更新版本号
Get the latest version of Deeplx
last_version=$(curl -Ls "https://api.github.com/repos/OwO-Network/DeepLX/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/v//g')
# Update the version number in the formula
sed -i "s/version \".*/version \"${last_version}\"/g" Formula/deeplx.rb
更新 sha256
# Download the new binaries
wget -O deeplx_darwin_amd64 https://github.com/OwO-Network/DeepLX/releases/download/v${last_version}/deeplx_darwin_amd64
wget -O deeplx_darwin_arm64 https://github.com/OwO-Network/DeepLX/releases/download/v${last_version}/deeplx_darwin_arm64
# Calculate the SHA256 hash for the new binaries
amd64_sha256=$(sha256sum deeplx_darwin_amd64 | cut -d ' ' -f 1)
arm64_sha256=$(sha256sum deeplx_darwin_arm64 | cut -d ' ' -f 1)
# Update the SHA256 hashes in the formula
sed -i "8s/.*/ sha256 \"${arm64_sha256}\"/" Formula/deeplx.rb
sed -i "11s/.*/ sha256 \"${amd64_sha256}\"/" Formula/deeplx.rb
# Delete the new binaries
rm -f deeplx_darwin*
在Action发布到Release之后,触发这个shell文件就可以啦。这样的话,当你有新的Release发布的时候,无需去维护Homebrew Tap。用户可以直接获取到最新的版本。