First off, thank you so much for taking the time to contribute! 👍
If you want to do local development, you can setup a development virtualenv in
.venv
by running make localdev
.
-
Check if there’s a matching issue before opening a new issue or pull request
-
When possible, provide a usage example to reproduce bugs
These steps should help you setup a development environment for the Globus CLI.
-
Create a fork of the globus/globus-cli repository.
Follow https://github.com/globus/globus-cli/fork in a browser.
-
Clone your forked repository & navigate to it.
git clone <fork-repo-url> && cd globus-cli
-
Install dependencies in a local virtualenv for development.
make install
-
Activate the resulting virtualenv.
source .venv/bin/activate
You should now have, in your virtualenv, the globus-cli
installed, pointed at
your local copy of the repo. globus
will invoke code directly out of the
repo.
You can write and test commands interactively in this setup.
-
Make sure it merges cleanly. We may request that you rebase if your PR has merge conflicts.
-
List any issues closed by the pull request
-
Squash intermediate and fixup commits. We recommend running
git rebase --interactive
prior to submitting a pull request.
These are our guidelines for good commit messages:
-
No lines over 72 characters
-
No GitHub emoji — use your words
-
Reference issues and pull requests where appropriate
-
Present tense and imperative mood
-
All options should have descriptive help text
-
For complex functionality, include sample usage in the helptext for the relevant command. If it’s a specific flag or feature that has complex behavior, make it a separate section of the help text. See
globus transfer async-transfer --help
for an example -
Comment liberally in source
-
Every command gets its own module, named after the command name
-
Think very hard before adding a new dependency — keep the dependencies of
globus_cli
as lightweight as possible -
Use the verbs
create
,show
,update
, andremove
for underlying API CRUD operations
If you are a CLI maintainer, you need to be able to do a release. For steps, see the RELEASING doc.