不囉唆直接上圖
馬上試試 pokesay
brew tap xiaoxiaosn/xiaoxiao
brew install pokesay
起源
這個故事是這樣的,有一天發現了一個有趣的 command pokemonsay他是 cowsay 的改編版,它可以讓 pokemon 出現說你想要他說的話 XDD
我用得很快樂的時候發現一件事很不快樂,當一行太多字的時候會換行
你看!都擠在一起了 R
這時我想到 cowsay 應該有這個功能才對呀! 查詢了之後發現 在 pokemonsay 裡面 -n
被用在 Do not tell the pokémon name.
也就是最底下不要 show pokemon 的名字
QQ 我不依,我自己改!
介紹 Homebrew
首先先介紹一下 homebrew 這個軟體~ 他是 MacOS 上的套件管理工具,是 mac 最重要的必裝軟體之一
brew
這個字是釀造的意思,homebrew
在家釀造也就是自釀的意思tap
第三方套件的倉庫,就相當於是 apt 的 ppa 一樣的角色formula
公式、配方,上面寫著軟體安裝的步驟,也就是釀製(brew)的方法cellar
酒窖存放釀好的酒,預設存在/usr/local/Cellar
,每個資料夾裡面也存有不同的版本,當 brew switch 某個套件版本的時候就是把/usr/local/bin
的 link 指過去
補充:
brew cask
用來安裝 macOS apps 也就是可以直接在應用程式裡面看到的圖像化軟體,像是 Chrome, Firefox, 360Safe 之類的
了解完基本架構後,我們知道目標就是製作自己的 tap
好讓 brew
可以安裝我們釋出的第三方套件
開始釀酒
我們分成兩個部分來完成,一個是我們的應用程式另一個是 homebrew 的安裝腳本
程式本身
只要任何一個可以執行的命令都行,所以先不著墨於此
範例會用下面這個 repo,已經把我想要的 -n
指令加回來啦~~
https://github.com/XiaoXiaoSN/pokesay
Formula 安裝指南
本文的重點來啦!
首先我們要到 github 上開一個新專案,命名叫做 homebrew-{your-tap-name},例如我的 homebrew-xiaoxiao
進入專案底下新增 Formula
資料夾,在底下新增你的 formula
# Formula/pokesay.rb
# 定義 Pokesay 繼承 Formula
class Pokesay < Formula
desc '"pokesay" is like "cowsay" but for pokémon.'
homepage "https://github.com/XiaoXiaoSN/pokesay"
# url 說明要去哪裡下載專案
# https://github.com/{username}/{repo}/{format}/{tag or branch}
# format 我們都寫 tarball
# tag or branch 就看你喜歡用哪個囉
url "https://github.com/XiaoXiaoSN/pokesay/tarball/v1.0.1"
# sha256 用來確認你上面說的檔案身份,等等下面會說怎麼長出來
sha256 "43511be3dbb52b380bf7501e3b06a0a17ee0349d0246601537481ca811753a4a"
# 版本號
version "v1.0.1"
# depends_on 定義安裝你的東西前,會用到的依賴套件
depends_on "cowsay" => :recommended
depends_on "coreutils" => [:recommended, "with-default-names"] if not OS.linux?
# 定義安裝步驟
def install
system "cp", "-r", "./cows", "#{prefix}/cows"
system "cp", "pokemonsay.sh", "pokesay"
# 字串取代,讓 pokesay 在本地也可以找得到參考檔案
inreplace "pokesay", /^pokemon_path=.*$/, "pokemon_path=#{prefix}/cows"
# 把 pokesay 複製到這個 formula 的目錄 (/usr/local/Cellar/{pkg}/0.1/bin)
# 並設定成可執行檔案 (chmod 0555 foo)
bin.install "pokesay"
end
# 安裝完成後的驗證測試,這邊偷懶沒寫 XD
test do
system "false"
end
end
如何產生 sha256
# 用 curl 下載壓縮檔下來, -L 跟隨跳轉 -o 儲存輸出到檔案
curl -L https://github.com/XiaoXiaoSN/pokesay/tarball/v1.0.1 -o pokesay.tar.gz
# 計算 sha256 雜湊值
shasum -a 256 pokesay.tar.gz
brew edit
brew edit
會叫出你安裝時下載的 Formula,讓你可以編輯再重新安裝
也可以藉機偷偷參考別人的 Formula 是如何編寫的~~
brew edit wget # 會使用預設編輯器開啟
Ref
homebrew 故事 https://www.onejar99.com/mac-homebrew-homebrew-cask-mac/ Formula-Cookbook https://docs.brew.sh/Formula-Cookbook