has comprobación de presencia de varias herramientas de línea de comandos en la ruta e informa su versión instalada.
Simplemente instale el script has (no hay dependencia aparte de bash ). Desde la línea de comandos, pase la lista de comandos que desea verificar como argumentos que has , por ejemplo:
$ 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 Si todo es bueno, has salidas con el código de estado 0 . El código de estado de salida refleja el número de comandos que no se encuentran en su ruta.
$ has node go javac
✔ node 8.2.1
✔ go 1.8.3
✘ javacY hacer eco del estado:
$ echo $?
1 has en scripts has puede usar en scripts de shell para verificar la presencia de la herramienta de una manera muy legible
if has node
then echo you have what it takes ?
fi Consejo pro : el comando has en arriba se puede reemplazar con todo el comando curl para garantizar la portabilidad del script → if curl -sL https://git.io/_has | bash -s node then ...
has es un solo guión bash que lo hace todo. Puede descargar el script y ponerlo a disposición de su $PATH . Sin embargo, para hacerlo aún más simple, solo siga uno de estos métodos.
Simplemente ejecute lo siguiente:
brew install kdabir/tap/has Simplemente ejecute el siguiente comando en un terminal: Clones has repose y lo instala en su ruta.
git clone https://github.com/kdabir/has.git && cd has && sudo make installPara una instalación no raíz:
git clone https://github.com/kdabir/has.git
cd has
make PREFIX= $HOME /.local install Para actualizar solo hacer una git fetch o make update seguida del comando make install apropiado.
curl -sL https://git.io/_has > /usr/local/bin/hascurl -sL https://git.io/_has | sudo tee /usr/local/bin/has > /dev/null Estos comandos son seguros para llamarse varias veces también (para actualizar has )
asdf plugin add has https://github.com/sylvainmetayer/asdf-has
asdf install has 1.4.0
Si eres vago, puedes has también directamente fuera de Internet:
curl -sL https://git.io/_has | bash -s git node npm
✔ git 2.17.1
✔ node 11.11.0
✔ npm 6.7.0 Protip : si eso es demasiado escribir cada vez, configure un alias en su archivo .bashrc / .zshrc :
alias has="curl -sL https://git.io/_has | bash -s"
Y úsalo
$ has git
✔ git 2.17.1
$ type has
has is aliased to `curl -sL https://git.io/_has | bash -s' Digamos que $ has foobar foobar not understood , porque has no haber tenido foobar con la lista blanca.
En tales casos, pase HAS_ALLOW_UNSAFE=y has foobar . Esto aún debería verificar la existencia de foobar e intenta detectar la versión también.
El valor debe ser
ypara que funcione.
.hasrc has buscado el archivo .hasrc en el directorio desde donde has emite el comando. Este archivo puede contener comandos que has verificar. Lista de un comando por línea. Las líneas que comienzan con # se tratan como comentarios.
El siguiente es un ejemplo de archivo .hasrc :
# tools
git
curl
# interpreters
ruby
node Cuando se has ejecutado en el directorio que contiene este archivo, produce:
$ has
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0 Además, los argumentos de CLI pasados a has son aditivos al archivo .hasrc . Por ejemplo, en el mismo Dir, si se dispara el siguiente comando, has verificaciones para ambos comandos aprobados de CLI Args y se proporcionan en el archivo .hasrc .
$ has java
✔ java 11.0.1
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0 Consejo profesional : Commit .hasrc File en la raíz de su proyecto. Esto puede funcionar como una verificación rápida para confirmar la presencia de todas las herramientas de línea de comando necesarias para construir y ejecutar su proyecto.
En máquinas que ni siquiera has instalado, su proyecto .hasrc
curl -sL https://git.io/_has | bash -s
Eche un vistazo al archivo .hasrc para este repositorio.
has La lista actual de paquetes compatibles se puede ver con bash tests/packages_all.sh
Si el comando que desea incluir admite cualquiera de -v , --version , -version , version , -V entonces puede encontrar la función correspondiente que puede llamarse para verificar la presencia y extraer la versión. Sin embargo, para muchas herramientas, la extracción de versión puede no funcionar y deberá agregar un análisis personalizado de la salida del comando. El script has comentado para guiar a los desarrolladores sobre lo que debe hacerse para agregar más herramientas.
/tests/test_all_packages.bats probará cada paquete tiene soportes. Esto incluye comandos recién agregados, así que agregue nuevos paquetes a
alpine.Dockerfile y ubuntu.Dockerfile para instalar la herramienta opackages_alpine_skip.txt y packages_ubuntu_skip.txt para excluir el paquete de las pruebas Si está contribuyendo con una función, asegúrese de verificar las pruebas actuales. Agregue casos de prueba para su función. Las pruebas se ejecutan utilizando el excelente marco de pruebas de BATS. Agregar pruebas y ejecutar make test
Levante el PR y asegúrese de que las pruebas pasen a las acciones de GitHub.