Extensions for Arcanist (should also work with any forks of Arcanist, like the one bundled with Phorge)
The recommended way to install these extensions is with composer. There are very few dependencies (only one, for the php-cs-fixer linter), so there shouldn't be many dependency conflicts.
composer require diablomedia/arcanist-extensions --dev
If composer installation is not possible, you can clone this repo somewhere in your system and point your .arcconfig
to the path where this is installed. You can also install it in the same location as your arcanist
and libphutil
directories, and arcanist should find the extensions there.
To enable all of the extensions in this repository, you just need to add one line to your .arcconfig
file's "load" section:
{
"load": ["vendor/diablomedia/arcanist-extensions/extensions/"]
}
If you don't want to enable all of the extensions in your config (technically they're not used until you configure them in your .arclint
(for linters) or .arcconfig
(for unit test engines)) you can load each extension individually, for example:
{
"load": [
"vendor/diablomedia/arcanist-extensions/extensions/composer_validate_linter",
"vendor/diablomedia/arcanist-extensions/extensions/phpstan_linter"
]
}
To configure the extension to run in your arcanist project, please reference each extension's README file (linked below).
- Linters
- Composer Validate - Validate composer.json and composer.lock files (using
composer --validate
command) - PHP CS Fixer - Runs PHP CS Fixer
- PHPStan - Runs PHPStan
- Composer Validate - Validate composer.json and composer.lock files (using
- Unit Test Engines
- Jest - Runs Jest (for Javascript tests) and processes coverage report
- Vitest - Runs Vitest (for Javascript tests) and processes coverage report
- Multi Test Engine - Allows configuration of multiple unit test engines (useful for repositories that contain tests for different languages, i.e. PHP and JS for a repo that contains server-side (PHP) and client side (Javascript) tests)
Some of these linters come from forks of other linters found on github that are generally not maintained anymore (or we forked due to some difference in functionality that worked better for us). Check out the README for each linter, which will link back to the original project.