A lightweight bash script that checks for the presence and versions of command line tools on your PATH.
has is a lightweight bash script that checks for the presence and versions of command-line tools on your system's PATH. It solves the problem of ensuring required tools are installed before running scripts or building projects, providing immediate feedback on missing dependencies. The tool exits with a status code indicating how many commands were not found, making it ideal for automation.
Developers, system administrators, and DevOps engineers who need to verify tool availability in shell scripts or CI/CD pipelines. It's particularly useful for teams managing development environments across multiple machines.
Developers choose has because it's a single bash script with zero dependencies, easy to install, and integrates seamlessly into existing workflows. Its simplicity, script-friendly exit codes, and support for project-specific `.hasrc` files make it more convenient than manually checking each tool.
✅ checks presence of various command line tools and their versions on the path
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Written entirely in bash with no external dependencies, making it extremely lightweight and easy to run anywhere bash is available, as emphasized in the README.
Returns an exit status code reflecting the number of missing commands, which is ideal for automation in shell scripts and CI/CD pipelines, as shown in the examples.
Supports a .hasrc file to define required tools per project, allowing teams to standardize environment checks and commit them to version control, as demonstrated in the README.
Can be installed via Homebrew, direct download, git clone, or run directly from the internet, providing multiple ways to integrate into workflows, detailed in the installation section.
Only reports installed versions without the ability to specify minimum or required versions, which is a gap for projects with strict dependency requirements.
As a bash script, it may not work on systems without bash or on Windows without additional setup, limiting cross-platform use beyond Unix-like environments.
For unlisted tools, users must enable unsafe mode with HAS_ALLOW_UNSAFE=y, adding complexity and potential security concerns if misused, as noted in the README.