在路径上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动作。