Skip to content

[CLI] improve CLI usage output #545

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
weakcamel opened this issue Jul 4, 2018 · 1 comment
Closed

[CLI] improve CLI usage output #545

weakcamel opened this issue Jul 4, 2018 · 1 comment

Comments

@weakcamel
Copy link
Contributor

Description of the problem, including code/CLI snippet

The CLI could do with some formatting refresh. Ideally, the command list could be formatted along with their relevant options to make it easier to read for --help and provide just the command names for -h.

A more modest improvement would be to print out (formatted) just the command names, always.

Expected Behavior

Something along the lines

For -h or in error conditions:

$ gitlab 
usage: gitlab [-h] [--version] [-v] [-d] [-c CONFIG_FILE] [-g GITLAB]
              [-o {json,legacy,yaml}] [-f FIELDS] COMMAND

COMMAND list

    application-settings
    broadcast-message
    ...
    project-merge-request-discussion-note
    ...
    user-project

To view options specific to a command, run 'gitlab COMMAND --help'

gitlab: error: too few arguments

For full help (--help):

$ gitlab --help
usage: gitlab [-h] [--version] [-v] [-d] [-c CONFIG_FILE] [-g GITLAB]
              [-o {json,legacy,yaml}] [-f FIELDS] COMMAND

COMMAND list

    application-settings
        --option  option-description
        --option  option-description
    broadcast-message
        --option  option-description
        --option  option-description
    ...
    project-merge-request-discussion-note
        --option  option-description
    ...
    user-project
gitlab: error: too few arguments

Actual Behavior

$ gitlab -h
usage: gitlab [-h] [--version] [-v] [-d] [-c CONFIG_FILE] [-g GITLAB]
              [-o {json,legacy,yaml}] [-f FIELDS]
              {application-settings,broadcast-message,current-user,current-user-email,current-user-gp-gkey,current-user-key,deploy-key,dockerfile,event,feature,geo-node,gitignore,gitlabciyml,group,group-access-request,group-badge,group-board,group-board-list,group-custom-attribute,group-epic,group-epic-issue,group-issue,group-member,group-milestone,group-notification-settings,group-project,group-subgroup,group-variable,hook,issue,l-da-pgroup,license,namespace,notification-settings,pages-domain,project,project-access-request,project-approval,project-badge,project-board,project-board-list,project-branch,project-commit,project-commit-comment,project-commit-discussion,project-commit-discussion-note,project-commit-status,project-custom-attribute,project-deployment,project-environment,project-event,project-export,project-file,project-fork,project-hook,project-import,project-issue,project-issue-award-emoji,project-issue-discussion,project-issue-discussion-note,project-issue-link,project-issue-note,project-issue-note-award-emoji,project-job,project-key,project-label,project-member,project-merge-request,project-merge-request-approval,project-merge-request-award-emoji,project-merge-request-diff,project-merge-request-discussion,project-merge-request-discussion-note,project-merge-request-note,project-merge-request-note-award-emoji,project-milestone,project-note,project-notification-settings,project-pages-domain,project-pipeline,project-pipeline-job,project-pipeline-schedule,project-pipeline-schedule-variable,project-protected-branch,project-push-rules,project-runner,project-service,project-snippet,project-snippet-award-emoji,project-snippet-discussion,project-snippet-discussion-note,project-snippet-note,project-snippet-note-award-emoji,project-tag,project-trigger,project-user,project-variable,project-wiki,runner,runner-job,snippet,todo,user,user-activities,user-custom-attribute,user-email,user-event,user-gp-gkey,user-impersonation-token,user-key,user-project}
              ...

GitLab API Command Line Interface

optional arguments:
  -h, --help            show this help message and exit
  --version             Display the version.
  -v, --verbose, --fancy
                        Verbose mode (legacy format only)
  -d, --debug           Debug mode (display HTTP requests)
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        Configuration file to use. Can be used multiple times.
  -g GITLAB, --gitlab GITLAB
                        Which configuration section should be used. If not
                        defined, the default selection will be used.
  -o {json,legacy,yaml}, --output {json,legacy,yaml}
                        Output format (v4 only): json|legacy|yaml
  -f FIELDS, --fields FIELDS
                        Fields to display in the output (comma separated). Not
                        used with legacy output

object:
  {application-settings,broadcast-message,current-user,current-user-email,current-user-gp-gkey,current-user-key,deploy-key,dockerfile,event,feature,geo-node,gitignore,gitlabciyml,group,group-access-request,group-badge,group-board,group-board-list,group-custom-attribute,group-epic,group-epic-issue,group-issue,group-member,group-milestone,group-notification-settings,group-project,group-subgroup,group-variable,hook,issue,l-da-pgroup,license,namespace,notification-settings,pages-domain,project,project-access-request,project-approval,project-badge,project-board,project-board-list,project-branch,project-commit,project-commit-comment,project-commit-discussion,project-commit-discussion-note,project-commit-status,project-custom-attribute,project-deployment,project-environment,project-event,project-export,project-file,project-fork,project-hook,project-import,project-issue,project-issue-award-emoji,project-issue-discussion,project-issue-discussion-note,project-issue-link,project-issue-note,project-issue-note-award-emoji,project-job,project-key,project-label,project-member,project-merge-request,project-merge-request-approval,project-merge-request-award-emoji,project-merge-request-diff,project-merge-request-discussion,project-merge-request-discussion-note,project-merge-request-note,project-merge-request-note-award-emoji,project-milestone,project-note,project-notification-settings,project-pages-domain,project-pipeline,project-pipeline-job,project-pipeline-schedule,project-pipeline-schedule-variable,project-protected-branch,project-push-rules,project-runner,project-service,project-snippet,project-snippet-award-emoji,project-snippet-discussion,project-snippet-discussion-note,project-snippet-note,project-snippet-note-award-emoji,project-tag,project-trigger,project-user,project-variable,project-wiki,runner,runner-job,snippet,todo,user,user-activities,user-custom-attribute,user-email,user-event,user-gp-gkey,user-impersonation-token,user-key,user-project}
                        Object to manipulate.

Specifications

  • python-gitlab version: 1.5.1
  • API version you are using (v3/v4): v4
  • Gitlab server version (or gitlab.com): 10.8.3
@weakcamel
Copy link
Contributor Author

Ooops. I thought I checked the existing issues.. and yet I missed the exact one which was proposing the same. Sorry ! :)

This is a duplicate of #456

@xarx00 xarx00 mentioned this issue Mar 5, 2019
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant