开发一个自己用的 homebrew/jswork 安装软件源
在mac下,homebrew是个很不错的软件安件工具;有时候,我们自己开发的一些小软件,也可以借助这个工具进行一键安装,我这里是复用 github上的 repo 来实现的。
在自己的 github上建立一个项目: homebrew-jswork
- 需要有相应的
ruby
脚本 - 继承自
Formula
类 - 实现一个
install
方法,其它的选择性实现(应该完整的实现会更好)
目录里有 Formula/t2k.rb
- Formula: 这个目录可以没有,不过我习惯把文件放一个目录里
- t2k就是自己要实现的类
实现t2k
里的安装步骤
class T2k < Formula
homepage "https://github.com/afeiship/topics2keywords"
url "https://github.com/afeiship/topics2keywords", :using => :git
version "1.0.1"
def install
system "npm", "i", "-g", "@jswork/topics2keywords"
end
test do
system "t2k --version"
end
end
开发完成,执行这个程序的安装吧
brew install afeiship/jswork/t2k
本地缓存以及调试
cd /usr/local/Homebrew/Library/Taps/afeiship
rm -rf homebrew-jswork/ && http_proxy=http://127.0.0.1:9090 https_proxy=http://127.0.0.1:9090 brew install afeiship/jswork/t2k
brew create
# 会在这里生成一个 相关的 xxx.rb 文件
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
第一个有效的安装
brew install afeiship/jswork/aliyun-cli
一个典型的安装脚本
class MyTool < Formula
desc "My awesome CLI tool"
homepage "https://example.com"
url "https://example.com/my_tool.tar.gz"
sha256 "abc123"
def install
libexec.install "my_tool" # 将文件放入 libexec 目录
bin.install_symlink libexec/"my_tool" => "mytool"
bin.write_env_script libexec/"my_tool", :MY_VAR => "my_value"
end
end
开源的 github release 模板
class MyTool < Formula
desc "My awesome CLI tool"
homepage "https://github.com/username/repo"
license "MIT" # 替换为实际的许可证类型
# 动态版本逻辑(根据最新 GitHub Release)
livecheck do
url :stable # 使用 Formula 的 `stable` url 获取最新版本
strategy :github_latest # 基于 GitHub 最新发布版本
end
# 下载地址和校验哈希(需要替换为你的实际项目信息)
if Hardware::CPU.arm?
url "https://github.com/username/repo/releases/latest/download/tool_Darwin_arm64.tar.gz"
sha256 "替换为_arm64_文件的_SHA256"
else
url "https://github.com/username/repo/releases/latest/download/tool_Darwin_x86_64.tar.gz"
sha256 "替换为_x86_64_文件的_SHA256"
end
# 安装逻辑
def install
bin.install "tool" => "gfl" # 安装并重命名为 gfl
end
# 测试逻辑
test do
assert_match version.to_s, shell_output("#{bin}/gfl --version")
end
end