geet icon indicating copy to clipboard operation
geet copied to clipboard

Command line interface for performing Git hosting service operations

Build Status

Geet

Command line interface for performing Git hosting service operations.

This tool is a provider-independent version of Hub and Lab.

Development status/plan

The current focus is implementing Gitlab functionalities (0.3.x series).

Everything is tracked in detail via issues and milestones.

Operation/providers support

The functionalities currently supported are:

  • Github/Gitlab:
    • create label
    • list issues, labels, milestones, MR/PRs
    • merge MR/PR
    • open repository
  • Github:
    • comment PR
    • create gist, issue, milestone, PR

Samples

Prerequisite(s)

Geet requires the API token environment variable to be set, eg:

export GITHUB_API_TOKEN=0123456789abcdef0123456789abcdef    # for GitHub
export GITLAB_API_TOKEN=0123456789abcd-ef0-1                # for GitLab

All the commands need to be run from the git repository.

Create an issue (with label and assignees)

Basic creation of an issue:

$ geet issue create

The default editor will be used for title/description:

Issue creation editing screenshot

Labels, milestone and assignees will be asked with menu selection:

Please select the label(s): (Use arrow keys, press Space to select and Enter to finish, and alphanumeric/underscore characters to filter)
‣ ⬡ bug
  ⬡ enhancement
  ⬡ not_an_issue
  ⬡ requires_design

Labels, milestone and assignees can be directly specified with the respective parameters:

$ geet issue create --labels bug,wip --assignees johncarmark --milestone 1.0

After creation, the issue page will be automatically opened in the default browser.

Create a PR (with label, reviewers, and assigned to self)

Basic creation of a PR:

$ geet pr create

The default editor will be used for title/description:

Issue creation editing screenshot

More advanced PR creation, with label and reviewers, assigned to self:

$ geet pr create --labels "code review" --reviewers kevin,tom,adrian

After creation, the issue page will be automatically opened in the default browser.

List issues/PRs

List the open issues, in default order (inverse creation date):

$ geet issue list
> 16. Implement issue opening (https://github.com/saveriomiroddi/geet/issues/16)
> 14. Update README (https://github.com/saveriomiroddi/geet/issues/14)
> 8. Implement milestones listing/show (https://github.com/saveriomiroddi/geet/issues/8)
> 4. Allow writing description in an editor (https://github.com/saveriomiroddi/geet/issues/4)
> 2. Support opening PR into other repositories (https://github.com/saveriomiroddi/geet/issues/2)

List the open PRs, in default order (inverse creation date):

$ geet pr list
> 21. Add PRs listing support (https://github.com/saveriomiroddi/geet/pull/21)

List milestones

$ geet milestone list
> 9. 0.2.0
>   4. Allow writing description in an editor (https://github.com/saveriomiroddi/geet/issues/4)
> 6. 0.2.1
>   69. Display warning when some operations are performed on a forked repository (https://github.com/saveriomiroddi/geet/issues/69)
>   60. Update Create PR test suite; the UTs are not inspecting some of the changes (https://github.com/saveriomiroddi/geet/issues/60)
>   51. Services should take repository in the initializer (https://github.com/saveriomiroddi/geet/issues/51)
> 7. 0.2.2
>   43. PR Merging: upstream support (https://github.com/saveriomiroddi/geet/issues/43)
>   35. Improve design of repository-independent actions (https://github.com/saveriomiroddi/geet/issues/35)

List labels

$ geet label list
> - bug (#ee0701)
> - enhancement (#84b6eb)
> - technical_debt (#ee0701)
> - top_priority (#d93f0b)

Create a gist

Create a private gist:

$ geet gist create /path/to/myfile

Create a public gist, with description:

$ geet gist create --public /path/to/myfile 'Gist description'

Using menus for options selection

Menus can be used for selecting attributes (labels, collaborators, milestones...).

This is an example of multiple choice selection:

Please select the label(s): (Use arrow keys, press Space to select and Enter to finish, and alphanumeric/underscore characters to filter)
‣ ⬡ bug
  ⬡ enhancement
  ⬡ not_an_issue
  ⬡ requires_design

Typing alphanumeric keys and underscore will enable filtering:

Please select the label(s): (Filter: "b")
‣ ⬡ bug
  ⬡ technical_debt

When a filter is active, use Backspace to cancel the last character, and Canc to reset it.

Help

Display the help:

$ geet [command [subcommand]] --help

Examples:

$ geet --help
$ geet pr --help
$ geet pr create --help