These instructions will get you a copy of the project up and running on your local machine for development, testing, and contribution purposes.
Please read the CLI Style Guide before implementing any features or modifying behavior as it contains expectations surrounding how the CLI should behave.
All changes to behavior must be documented in the CHANGELOG.md.
To get started with local development, you will need three things:
- Golang installed locally (instructions available here).
- dep installed locally (instructions available here).
- A version of
makeavailable for usage of theMakefile. - The repository checked out in the appropriate location of your
$GOPATH.
Ensure you've checked out the repository into the appropriate path inside your
$GOPATH. For example, if your $GOPATH is set to ~/go, then you'd check
this repository out at ~/go/src/github.com/smallstep/cli. You can
learn more about $GOPATH in the
documentation.
Once you've cloned the repository to the appropriate location, you will now be
able to install any other dependencies via the make bootstrap command.
You should only ever need to run this command once, as it will ensure you have
the right version of dep and gometalinter installed.
To build step, simply run make build which will build the cli and place the
binary in the bin folder.
Now that you've installed any dependencies, you can run the tests and lint the
code base simply by running make.
Run the unit tests:
make test
For a more verbose version of the unit tests:
make vtest
Run the integration tests:
make integration
These tests apply the following Go linters to verify code style and formatting:
make lint
To add any dependency to the repository, simply import it into your code and
then run dep ensure which will update the Gopkg.lock file. A specific
version of a dependency can be specified by adding it to the Gopkg.toml file
and running dep ensure.
To remove a dependency, simply remove it from the codebase and any mention of
it in the Gopkg.toml file and run dep ensure which will remove it from the
vendor folder while updating the Gopkg.lock file.