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 быть использован в сценариях оболочки для проверки наличия инструмента очень читаемым способом
if has node
then echo you have what it takes ?
fi Совет Pro : команда has выше может быть заменена всей командой 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 .
В таких случаях Pass 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 Кроме того, аргументы CLI, передаваемые в has являются аддитивными к файлу .hasrc . Например, в одном и том же DIR, если следующая команда запускается, has проверки для обеих команд, передаваемых из CLI ARGS и предоставленных в файле .hasrc .
$ has java
✔ java 11.0.1
✔ git 2.19.1
✔ curl 7.54.0
✔ ruby 2.3.1
✔ node 10.7.0 Совет Pro : Commit .hasrc файл в корне вашего проекта. Это может работать в качестве быстрой проверки для подтверждения присутствия Все инструменты командной строки, необходимые для создания и запуска вашего проекта.
На машинах, у .hasrc даже нет даже has .
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.