如何创建一个三方home brew tap

前情提要

为什么要创建三方的homeBrew呢?原因在于呀,我们想要官方的homebrew添加软件是有很多限制的,比如需要在官方的homeBrew Formula里添加ruby脚本文件,并且要增加测试脚本,诸如此,还需要像官方的brew仓库提交MR,等待官方的合并,相对来说,如果不是公开的三方库,我们这样做无非是增加了很多的工作量。那么另外一种简单,同样是brew支持的方式就是创建自己的三方brew 仓库。(当然我们是因为有需求驱动的,简单说我想要借助brew的便捷性,达到内部lint工具的快捷安装),接下来,我会把我创建以及成功使用的步骤做以下几点记录。

1. 创建三方Tap仓库

​ 如何创建三方tap库?

1. 首先,我们需要再github上创建一个公开的仓库,并且名字以 homebrew- 开头的。然后将建好的tap仓库git clone到本地; 2. 在仓库里添加Formula目录,这个目录是放我们三方软件安装脚本的,具体的脚本我会在3点里细说。

​ 如下:https://github.com/xxxx/homebrew-private

​ 这样我们的准备工作就完成了。ok,那怎么添加到brew呢?

2. 开发brew 三方库lib

比如我们用shell 开发了一个命令行工具exampleLint, 我们把他放到了github里,地址为https://github.com/xxx/xxx/exampleLint.

这样来说我们的三方lib就准备完成了…

当然你可以选择任何语言去写,shell、swift、ruby、python等等

3. 编写Formula ruby脚本文件

来到了比较重要的环节,home brew 当然需要我们提供给它一个脚本,告诉他这个lib的一些信息啊,download地址等等,这个文件就是放在Formula目录下,是一个ruby脚本文件。

1、将2步骤中的lib可执行文件,打包成tar包

# 将release文件打包成xxx.tar.gz
tar -czf xxx.tar.gz release

如果是shell开发,我们可以直接用github生成的.tar.gz文件

2、生成SHA256

shasum -a 256 xxx.tar.gz | awk '{print $1}' > xxx-sha256.txt

3、如果自己生成的tar包,则需要上传到github的release中,上传完会得到下载链接。

4、生成formula安装脚本

brew create https://xxx/exampleLint.tar.gz
class ExampleLint < Formula
  desc "https://github.com/HaoXianSen/exampleLint"
  homepage "https://github.com/HaoXianSen/exampleLint"
  url "https://github.com/HaoXianSen/exampleLint/releases/download/1.0.0/exampleLint-mac.tar.gz"
  sha256 "bde3c29d31576ad833d3e22c5ed2889589917a367b749977a7703e018fc99a43"
  version "1.0.0"
  def install
    bin.install "exampleLint"
  end
end

将对应的信息添加补充到上边脚本里。

ExampleLint 继承于Formula类。具体文档查看https://docs.brew.sh/Formula-Cookbook

4. 小试牛刀

安装我们自己的工具包:

brew tap xxxx/private 或者 brew tap xxxx/homebrew-private
# 我们可以带前缀homebrew-也可以不带,xxxx是github中最后地址的前一段,一般是自己github名

这样我们就可以将我们三方tap加入到brew中了,可到具体位置查看:

brew --repository 可查看brew 安装位置,查看/Library/Taps/

接下来就可以安装我们自己的软件了, 如下方式:

brew install exampleLint

就可以安装我们的软件。

5. 更新与版本

我们难免会遇到lib版本需要更新。如何更新版本?

brew tap <user/repo> <URL>
brew tap --force-auto-update <user/repo> 

与安装brew 三方库一样,只要我们执行这个命令,github三方仓库就会更新到最新。

6. 移除tap

移除使用以下命令

brew untap user/repo

参考文献

1、 homebrew 官网

2、https://www.jianshu.com/p/df351f34c160