uber-dot-arcanist
This product encapsulates any arcanist plugins we depend on at Uber. With it,
you can avoid copypasta plugin folders in the .arcanist folder at the root of
your project.
Included Arcanist Plugins
Currently, this module contains four arcanist plugins:
Usage
To use this module, follow these steps from the root of your project:
arc upgrade
npm install --save-dev uber-dot-arcanist
ls -al .arcanist
rm -rf .arcanist
After removing the .arcanist folder, you need to configure arcanist to load the
plugins from the node_modules/uber-dot-arcanist/.arcanist/
folder.
Open your .arcconfig
file and look for the load
property. It should be an
array like so:
{
"load": [".arcanist/tap", "arcanist/uber-standard"]
}
If you see .arcanist/jshintlinter
in the array, you can delete that element.
For jenkinsphoo
and tap
, you just need to prepend the path to the .arcanist
folder in this module. Assuming your load
value was the one right above, your
new value should be:
{
"load": [
"node_modules/uber-dot-arcanist/.arcanist/tap",
"node_modules/uber-dot-arcanist/.arcanist/uber-standard"
]
}
To add support for lint-trap when submitting differentials to Phabricator with
arc diff
, you can add the following to your .arclint
file.
{
"linters": {
"uber-standard": {
"type": "uber-standard"
}
}
}
Once you've made these changes just stage your changes and commit:
git add package.json
git add .arclint
git rm .arcanist
git add .arcconfig
git commit -m "Loading arcanist plugins from uber-dot-arcanist npm module"
How to handle other plugins in .arcanist
If you encounter a plugin in your .arcanist folder that is not jenkinsphoo
,
tap
or jshintlinter
, you should first check the [phacility/arcanist][arcrepo]
to see if the plugin you are using is already part of the standard arcanist
install. If it is not, git clone this repo and add the plugin to this repo to
make it available to other engineers at Uber. Don't forget to add the repo to
the section titled "Included Arcanist Plugins" at the top of this README.
Tests
This module is just a wrapper around arcanist plugins. It is not callable as a
library and contains no binary file. The tests just check that the expected
plugins are included and that this module throws if called programmatically.
License
JenkinsDiffEventListener.php
is Apache 2 licensed from
Disqus. Everything else is MIT licensed from Uber Technologies, Inc.
The MIT License (MIT)
Copyright (c) 2014 Uber Technologies, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.