Contributing to the CLI
Our CLI is fully open source and you're more than welcome to make new contributions
Requirements
Most of this package is a very conventional Python package. The main difference is the static the CLI's analysis module uses both git submodules and C code
Before installing, one should pull the submodules with:
git submodule update --init
Then, install dependencies with
pip install -r requirements.txt python setup.py develop
The C code shouldn't require anything additional setup to get running, but depending on your enviroment, you may be prompted to install compilers and supporting tools. If errors are generating during installation, it is likely due to missing dependencies / tools required of the C code. In many cases, resulting error messages should be clear enough to determine what is missing and how to install it, but common errors will be collected here as they are encountered.
Guidelines
There are a few guidelines when developing in this systems. Some notable folders:
commands
- It's the folder that interacts with the caller. This is where the commands themselves should reside. These commands are not meant to do heavy lifting. They only do wiring, which is mostly parsing the input parameters.services
- It's where the heavy logic resides. It's mostly organizaed by which command needs them. Commands should generally be thin wrappers around these services.helpers
- This is meant for logic that is useful accross different commands. For example, logging helpers, or the logic the searches folders.
Releases
The standard way to making a new release is the following:
- Open a PR that increases the version number in setup.py. As a rule of thumb, just add one to the micro/patch version (e.g., v0.1.6 -> v0.1.7).
- Get the up-to-date master branch locally and run the
tag.release
command from the Makefile.
$ make tag.release version=v<VERSION_NUM>
The version tag must match the regex defined on the Makefile (tag_regex := ^v([0-9]{1,}\.){2}[0-9]{1,}([-_]\w+)?$
).
âšī¸ Note:
Releases withtest
word in them are created asdraft
.
Releases withbeta
word in them are created aspre-release
.
Updated about 1 year ago