has vérifie la présence de divers outils de ligne de commande sur le chemin et rapporte leur version installée.
Installez simplement le script has (il n'y a pas de dépendance en dehors de bash lui-même). Dans la ligne de commande, passez la liste des commandes que vous souhaitez vérifier comme arguments pour has , par exemple:
$ 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 tout est bon, has des sorties avec le code d'état 0 . Le code d'état de sortie reflète le nombre de commandes introuvables sur votre chemin.
$ has node go javac
✔ node 8.2.1
✔ go 1.8.3
✘ javacEt écho au statut:
$ echo $?
1 has dans les scripts has être utilisé dans les scripts shell pour vérifier la présence de l'outil de manière très lisible
if has node
then echo you have what it takes ?
fi Conseil de pro : La has dans la commande ci-dessus peut être remplacée par toute la commande curl pour assurer la portabilité du script → if curl -sL https://git.io/_has | bash -s node then ...
has est un seul script bash qui fait tout. Vous pouvez télécharger le script et le rendre disponible sur votre $PATH . Cependant, pour le rendre encore plus simple, suivez simplement l'une de ces méthodes.
Exécutez simplement ce qui suit:
brew install kdabir/tap/has Exécutez simplement la commande suivante dans un terminal: il clones has repo et l'installe dans votre chemin.
git clone https://github.com/kdabir/has.git && cd has && sudo make installPour une installation non racinaire:
git clone https://github.com/kdabir/has.git
cd has
make PREFIX= $HOME /.local install Pour mettre à jour, faites simplement un git fetch ou make update suivi de la commande make install appropriée.
curl -sL https://git.io/_has > /usr/local/bin/hascurl -sL https://git.io/_has | sudo tee /usr/local/bin/has > /dev/null Ces commandes sont également sûres à plusieurs fois (à mettre à jour has )
asdf plugin add has https://github.com/sylvainmetayer/asdf-has
asdf install has 1.4.0
Si vous êtes paresseux, vous pouvez has directement sur 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 c'est trop tapé à chaque fois, configurez un alias dans votre fichier .bashrc / .zshrc :
alias has="curl -sL https://git.io/_has | bash -s"
Et utilisez-le
$ has git
✔ git 2.17.1
$ type has
has is aliased to `curl -sL https://git.io/_has | bash -s' Disons que $ has foobar renvoie foobar not understood , car has peut-être pas fait de foobar à la liste blanche.
Dans de tels cas, pass HAS_ALLOW_UNSAFE=y has foobar . Cela devrait toujours vérifier l'existence de foobar et essaie également de détecter la version.
La valeur doit être exactement
ypour que cela fonctionne.
.hasrc has recherché le fichier .hasrc dans le répertoire d'où has la commande a émis. Ce fichier peut contenir des commandes qui has vérifiées. Réservez une commande par ligne. Les lignes commençant par # sont traitées comme des commentaires.
Voici un exemple du fichier .hasrc :
# tools
git
curl
# interpreters
ruby
node Quand has exécuté dans le répertoire contenant ce fichier, il produit:
$ has
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0 De plus, les arguments CLI has sont additifs au fichier .hasrc . Par exemple, dans le même Dir, si la commande suivante est licenciée, has vérifié les deux commandes transmises de CLI Args et fournie dans le fichier .hasrc .
$ has java
✔ java 11.0.1
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0 Conseil de pro : engagez le fichier .hasrc à la racine de votre projet. Cela peut fonctionner comme une vérification rapide pour confirmer la présence Tous les outils de ligne de commande requis pour créer et exécuter votre projet.
Sur les machines qui n'ont même pas has installées, .hasrc de votre projet est honoré par cette commande:
curl -sL https://git.io/_has | bash -s
Jetez un œil au fichier .hasrc pour ce dépôt.
has La liste actuelle des packages pris en charge peut être consulté avec bash tests/packages_all.sh
Si la commande que vous souhaitez inclure prend en charge l'une des -v , --version , -version , version , -V , vous pouvez trouver une fonction correspondante qui peut être appelée pour vérifier la présence et extraire la version. Cependant, pour de nombreux outils, l'extraction de la version peut ne pas fonctionner et vous devrez ajouter l'analyse personnalisée de la sortie de la commande. Le script has est commenté pour guider les développeurs sur ce qui doit être fait pour ajouter plus d'outils.
/tests/test_all_packages.bats testera chaque package a des supports. Cela inclut les commandes nouvellement ajoutées, veuillez donc ajouter de nouveaux packages à
alpine.Dockerfile et ubuntu.Dockerfile pour installer l'outil oupackages_alpine_skip.txt et packages_ubuntu_skip.txt pour exclure le package des tests Si vous contribuez une fonctionnalité, veuillez vous assurer de vérifier les tests actuels. Ajoutez des cas de test pour votre fonctionnalité. Les tests sont exécutés à l'aide de l'excellent framework de test de battes. Ajouter des tests et exécuter make test
Soulevez le PR et assurez-vous que les tests réussissent les actions GitHub.