Helps to discover and install tools
Helps to discover and install tools.
Toolbox started its life as a simple script in the phpqa docker image. Its purpose was to install set of tools while building the docker image and it's still its main goal. It has been extracted as a separate project to make maintenance easier and enable new use cases.
Get the
toolbox.pharfrom the latest release. The command below should do the job:
curl -s https://api.github.com/repos/jakzal/toolbox/releases/latest \ | grep "browser_download_url.*toolbox.phar" \ | cut -d '"' -f 4 \ | xargs curl -Ls -o toolbox \ && chmod +x toolbox
./toolbox list-tools
To exclude some tools from the listing multiple
--exclude-tagoptions can be added. The
--tagoption can be used to filter tools by tags.
./toolbox list-tools --exclude-tag exclude-php:7.3 --exclude-tag foo --tag bar
./toolbox install
By default tools are installed in the
/usr/local/bindirectory. To perform an installation in another location, pass the
--target-diroption to the
installcommand. Also, to change the location composer packages are installed in, export the
COMPOSER_HOMEenvironment variable.
mkdir /tools export COMPOSER_HOME=/tools/.composer export PATH="/tools:$COMPOSER_HOME/vendor/bin:$PATH" ./toolbox install --target-dir /tools
The target dir can also be configured with the
TOOLBOX_TARGET_DIRenvironment variable.
To only see what commands would be executed, use the dry run mode:
./toolbox install --dry-run
To exclude some tools from the installation multiple
--exclude-tagoptions can be added. The
--tagoption can be used to filter tools by tags.
./toolbox install --exclude-tag exclude-php:7.3 --exclude-tag foo --tag bar
./toolbox test
To only see what commands would be executed, use the dry run mode:
./toolbox test --dry-run
To exclude some tools from the generated test command multiple
--exclude-tagoptions can be added. The
--tagoption can be used to filter tools by tags.
./toolbox test --exclude-tag exclude-php:7.3 --exclude-tag foo --tag bar
By default the following files are used to load tool definitions:
resources/pre-installation.json
resources/architecture.json
resources/checkstyle.json
resources/compatibility.json
resources/composer.json
resources/deprecation.json
resources/documentation.json
resources/linting.json
resources/metrics.json
resources/phpstan.json
resources/psalm.json
resources/refactoring.json
resources/security.json
resources/test.json
resources/tools.json
Definitions can be loaded from customised files by passing the
--toolsoption(s):
./toolbox list-tools --tools path/to/file1.json --tools path/to/file2.json
Tool definition location(s) can be also specified with the
TOOLBOX_JSONenvironment variable:
TOOLBOX_JSON='path/to/file1.json,path/to/file2.json' ./toolbox list-tools
Tools can be tagged in order to enable grouping and filtering them.
The tags below have a special meaning:
pre-installation- these tools will be installed before any other tools.
exclude-php:7.3,
exclude-php:7.1etc - used to exclude installation on the specified php version.
Please read the Contributing guide to learn about contributing to this project. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.