在路徑上has檢查各種命令行工具的存在,並報告其已安裝版本。
只需安裝has腳本(除了bash本身之外,沒有依賴性)。從命令行中,傳遞要檢查作為has的命令列表,例如:
$ has node npm java git gradle
✔ node 8.2.1
✔ npm 5.3.0
✔ java 1.8.0
✔ git 2.14.1
✔ gradle 4.0.1如果一切都很好, has帶有狀態代碼0的退出。退出狀態代碼反映了路徑上找不到的命令數量。
$ has node go javac
✔ node 8.2.1
✔ go 1.8.3
✘ javac並回應狀態:
$ echo $?
1 has has在Shell腳本中使用以非常可讀的方式檢查工具的存在
if has node
then echo you have what it takes ?
fi專家提示:可以用整個curl命令替換上面的命令中的has in the in curl命令,以確保腳本的可移植性→ if curl -sL https://git.io/_has | bash -s node then ...
has一個可以完成所有功能的單個bash腳本。您可以下載腳本並在$PATH上提供它。但是,為了使其更簡單,只需遵循這些方法之一即可。
只需運行以下內容:
brew install kdabir/tap/has只需在終端中執行以下命令:它的克隆has存儲庫並將其安裝到您的路徑中。
git clone https://github.com/kdabir/has.git && cd has && sudo make install對於非根安裝:
git clone https://github.com/kdabir/has.git
cd has
make PREFIX= $HOME /.local install要更新git fetch或make update ,然後是適當的make install命令。
curl -sL https://git.io/_has > /usr/local/bin/hascurl -sL https://git.io/_has | sudo tee /usr/local/bin/has > /dev/null這些命令也可以安全多次稱為( has )
asdf plugin add has https://github.com/sylvainmetayer/asdf-has
asdf install has 1.4.0
如果您很懶惰,則可以直接has互聯網:
curl -sL https://git.io/_has | bash -s git node npm
✔ git 2.17.1
✔ node 11.11.0
✔ npm 6.7.0 PROTIP :如果每次打字太多,請在.bashrc / .zshrc文件中設置一個別名:
alias has="curl -sL https://git.io/_has | bash -s"
並使用它
$ has git
✔ git 2.17.1
$ type has
has is aliased to `curl -sL https://git.io/_has | bash -s' 假設$ has foobar返回了foobar not understood ,因為has沒有白foobar 。
在這種情況下,通行證HAS_ALLOW_UNSAFE=y has foobar 。這仍然應該檢查是否存在foobar ,並嘗試檢測版本。
該值必須完全是
y。
.hasrc文件在目錄中has了.hasrc文件,從哪裡發出has 。該文件可以包含has檢查的命令。列出每行命令。以#開頭的行被視為評論。
以下是.hasrc文件的示例:
# tools
git
curl
# interpreters
ruby
node has在包含此文件的目錄中運行時,它會產生:
$ has
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0另外, has給.hasrc文件的CLI參數是加法的。例如,在同一DIR中,如果觸發了以下命令,則對CLI ARGS傳遞的兩個命令has檢查,並在.hasrc文件中提供。
$ has java
✔ java 11.0.1
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0專家提示:在您的項目根部提交.hasrc文件。這可以用作快速檢查,以確認存在構建和運行項目所需的所有命令行工具。
在甚至沒有has的機器上,您的項目的.hasrc受到此命令的榮譽:
curl -sL https://git.io/_has | bash -s
查看此存儲庫的.hasrc文件。
has更多功能可以使用bash tests/packages_all.sh查看所支持軟件包的當前列表
如果您希望包含命令支持-v , --version , -version , version , -V則可以找到可以調用的相應函數來檢查在場和提取版本。但是,對於許多工具版本,提取可能不起作用,您需要添加命令輸出的自定義解析。對has腳本進行了評論,以指導開發人員添加更多工具需要做的事情。
/tests/test_all_packages.bats將測試每個軟件包具有支持。這包括新添加的命令,因此請添加新軟件包
alpine.Dockerfile和ubuntu.Dockerfile安裝工具或packages_alpine_skip.txt和packages_ubuntu_skip.txt將包裹排除在測試中如果您為功能提供貢獻,請確保檢查當前測試。為您的功能添加測試用例。使用出色的蝙蝠測試框架執行測試。添加測試並進行make test
提高PR並確保測試通過GitHub動作。