Skip to content

feat: john's ugly vertical help formatter :) #2191

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
wants to merge 1 commit into from

Conversation

JohnVillalovos
Copy link
Member

No description provided.

@codecov-commenter
Copy link

codecov-commenter commented Jul 27, 2022

Codecov Report

Merging #2191 (0e09b32) into main (510ec30) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main    #2191   +/-   ##
=======================================
  Coverage   95.53%   95.54%           
=======================================
  Files          81       81           
  Lines        5309     5319   +10     
=======================================
+ Hits         5072     5082   +10     
  Misses        237      237           
Flag Coverage Δ
api_func_v4 81.36% <18.18%> (-0.12%) ⬇️
cli_func_v4 82.94% <100.00%> (+0.12%) ⬆️
unit 87.27% <81.81%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
gitlab/cli.py 100.00% <100.00%> (ø)
gitlab/v4/cli.py 90.78% <100.00%> (ø)

@JohnVillalovos JohnVillalovos force-pushed the jlvillal/johns_crappy_vertical_help branch from d7f6e78 to b028757 Compare July 27, 2022 23:46
@JohnVillalovos
Copy link
Member Author

JohnVillalovos commented Jul 27, 2022

What this looks like:

$ gitlab --help
usage: gitlab [-h] [--version] [-v] [-d] [-c CONFIG_FILE] [-g GITLAB] [-o {json,legacy,yaml}] [-f FIELDS] [--server-url SERVER_URL] [--ssl-verify SSL_VERIFY] [--timeout TIMEOUT] [--api-version API_VERSION] [--per-page PER_PAGE] [--pagination PAGINATION] [--order-by ORDER_BY]
              [--user-agent USER_AGENT] [--private-token PRIVATE_TOKEN | --oauth-token OAUTH_TOKEN | --job-token JOB_TOKEN]
              application,
              application-appearance,
              application-settings,
              audit-event,
              broadcast-message,
              ci-lint,
              current-user,
              current-user-email,
              current-user-gpg-key,
              current-user-key,
              current-user-status,
              deploy-key,
              deploy-token,
              dockerfile,
              event,
              feature,
              generic-package,
              geo-node,
              gitignore,
              gitlabciyml,
              group,
              group-access-request,
              group-access-token,
              group-audit-event,
              group-badge,
              group-billable-member,
              group-billable-member-membership,
              group-board,
              group-board-list,
              group-cluster,
              group-custom-attribute,
              group-deploy-token,
              group-descendant-group,
              group-epic,
              group-epic-award-emoji,
              group-epic-discussion-note,
              group-epic-issue,
              group-epic-note,
              group-epic-note-award-emoji,
              group-epic-resource-label-event,
              group-export,
              group-hook,
              group-import,
              group-invitation,
              group-issue,
              group-issues-statistics,
              group-iteration,
              group-label,
              group-member,
              group-member-all,
              group-merge-request,
              group-milestone,
              group-notification-settings,
              group-package,
              group-project,
              group-push-rules,
              group-runner,
              group-subgroup,
              group-variable,
              group-wiki,
              hook,
              issue,
              issues-statistics,
              key,
              ldap-group,
              license,
              merge-request,
              namespace,
              notification-settings,
              pages-domain,
              personal-access-token,
              project,
              project-access-request,
              project-access-token,
              project-additional-statistics,
              project-approval,
              project-approval-rule,
              project-artifact,
              project-audit-event,
              project-badge,
              project-board,
              project-board-list,
              project-branch,
              project-ci-lint,
              project-cluster,
              project-commit,
              project-commit-comment,
              project-commit-discussion,
              project-commit-discussion-note,
              project-commit-status,
              project-custom-attribute,
              project-deploy-token,
              project-deployment,
              project-deployment-merge-request,
              project-environment,
              project-event,
              project-export,
              project-file,
              project-fork,
              project-hook,
              project-import,
              project-integration,
              project-invitation,
              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-issue-resource-label-event,
              project-issue-resource-milestone-event,
              project-issue-resource-state-event,
              project-issues-statistics,
              project-job,
              project-key,
              project-label,
              project-member,
              project-member-all,
              project-merge-request,
              project-merge-request-approval,
              project-merge-request-approval-rule,
              project-merge-request-approval-state,
              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-merge-request-pipeline,
              project-merge-request-resource-label-event,
              project-merge-request-resource-milestone-event,
              project-merge-request-resource-state-event,
              project-merge-train,
              project-milestone,
              project-note,
              project-notification-settings,
              project-package,
              project-package-file,
              project-pages-domain,
              project-pipeline,
              project-pipeline-bridge,
              project-pipeline-job,
              project-pipeline-schedule,
              project-pipeline-schedule-variable,
              project-pipeline-test-report,
              project-pipeline-test-report-summary,
              project-pipeline-variable,
              project-protected-branch,
              project-protected-environment,
              project-protected-tag,
              project-push-rules,
              project-registry-repository,
              project-registry-tag,
              project-release,
              project-release-link,
              project-remote-mirror,
              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-storage,
              project-tag,
              project-trigger,
              project-user,
              project-variable,
              project-wiki,
              registry-repository,
              runner,
              runner-all,
              runner-job,
              shared-project,
              snippet,
              starred-project,
              todo,
              topic,
              user,
              user-activities,
              user-custom-attribute,
              user-email,
              user-event,
              user-gpg-key,
              user-impersonation-token,
              user-key,
              user-membership,
              user-personal-access-token,
              user-project,
              user-status,
              variable
              ...

GitLab API Command Line Interface

options:
  -h, --help            show this help message and exit
  --version             Display the version.
  -v, --verbose, --fancy
                        Verbose mode (legacy format only) [env var: GITLAB_VERBOSE]
  -d, --debug           Debug mode (display HTTP requests) [env var: GITLAB_DEBUG]
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        Configuration file to use. Can be used multiple times. [env var: PYTHON_GITLAB_CFG]
  -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
  --server-url SERVER_URL
                        GitLab server URL [env var: GITLAB_URL]
  --ssl-verify SSL_VERIFY
                        Whether SSL certificates should be validated. [env var: GITLAB_SSL_VERIFY]
  --timeout TIMEOUT     Timeout to use for requests to the GitLab server. [env var: GITLAB_TIMEOUT]
  --api-version API_VERSION
                        GitLab API version [env var: GITLAB_API_VERSION]
  --per-page PER_PAGE   Number of entries to return per page in the response. [env var: GITLAB_PER_PAGE]
  --pagination PAGINATION
                        Whether to use keyset or offset pagination [env var: GITLAB_PAGINATION]
  --order-by ORDER_BY   Set order_by globally [env var: GITLAB_ORDER_BY]
  --user-agent USER_AGENT
                        The user agent to send to GitLab with the HTTP request. [env var: GITLAB_USER_AGENT]
  --private-token PRIVATE_TOKEN
                        GitLab private access token [env var: GITLAB_PRIVATE_TOKEN]
  --oauth-token OAUTH_TOKEN
                        GitLab OAuth token [env var: GITLAB_OAUTH_TOKEN]
  --job-token JOB_TOKEN
                        GitLab CI job token [env var: CI_JOB_TOKEN]

resource:
  application,
  application-appearance,
  application-settings,
  audit-event,
  broadcast-message,
  ci-lint,
  current-user,
  current-user-email,
  current-user-gpg-key,
  current-user-key,
  current-user-status,
  deploy-key,
  deploy-token,
  dockerfile,
  event,
  feature,
  generic-package,
  geo-node,
  gitignore,
  gitlabciyml,
  group,
  group-access-request,
  group-access-token,
  group-audit-event,
  group-badge,
  group-billable-member,
  group-billable-member-membership,
  group-board,
  group-board-list,
  group-cluster,
  group-custom-attribute,
  group-deploy-token,
  group-descendant-group,
  group-epic,
  group-epic-award-emoji,
  group-epic-discussion-note,
  group-epic-issue,
  group-epic-note,
  group-epic-note-award-emoji,
  group-epic-resource-label-event,
  group-export,
  group-hook,
  group-import,
  group-invitation,
  group-issue,
  group-issues-statistics,
  group-iteration,
  group-label,
  group-member,
  group-member-all,
  group-merge-request,
  group-milestone,
  group-notification-settings,
  group-package,
  group-project,
  group-push-rules,
  group-runner,
  group-subgroup,
  group-variable,
  group-wiki,
  hook,
  issue,
  issues-statistics,
  key,
  ldap-group,
  license,
  merge-request,
  namespace,
  notification-settings,
  pages-domain,
  personal-access-token,
  project,
  project-access-request,
  project-access-token,
  project-additional-statistics,
  project-approval,
  project-approval-rule,
  project-artifact,
  project-audit-event,
  project-badge,
  project-board,
  project-board-list,
  project-branch,
  project-ci-lint,
  project-cluster,
  project-commit,
  project-commit-comment,
  project-commit-discussion,
  project-commit-discussion-note,
  project-commit-status,
  project-custom-attribute,
  project-deploy-token,
  project-deployment,
  project-deployment-merge-request,
  project-environment,
  project-event,
  project-export,
  project-file,
  project-fork,
  project-hook,
  project-import,
  project-integration,
  project-invitation,
  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-issue-resource-label-event,
  project-issue-resource-milestone-event,
  project-issue-resource-state-event,
  project-issues-statistics,
  project-job,
  project-key,
  project-label,
  project-member,
  project-member-all,
  project-merge-request,
  project-merge-request-approval,
  project-merge-request-approval-rule,
  project-merge-request-approval-state,
  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-merge-request-pipeline,
  project-merge-request-resource-label-event,
  project-merge-request-resource-milestone-event,
  project-merge-request-resource-state-event,
  project-merge-train,
  project-milestone,
  project-note,
  project-notification-settings,
  project-package,
  project-package-file,
  project-pages-domain,
  project-pipeline,
  project-pipeline-bridge,
  project-pipeline-job,
  project-pipeline-schedule,
  project-pipeline-schedule-variable,
  project-pipeline-test-report,
  project-pipeline-test-report-summary,
  project-pipeline-variable,
  project-protected-branch,
  project-protected-environment,
  project-protected-tag,
  project-push-rules,
  project-registry-repository,
  project-registry-tag,
  project-release,
  project-release-link,
  project-remote-mirror,
  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-storage,
  project-tag,
  project-trigger,
  project-user,
  project-variable,
  project-wiki,
  registry-repository,
  runner,
  runner-all,
  runner-job,
  shared-project,
  snippet,
  starred-project,
  todo,
  topic,
  user,
  user-activities,
  user-custom-attribute,
  user-email,
  user-event,
  user-gpg-key,
  user-impersonation-token,
  user-key,
  user-membership,
  user-personal-access-token,
  user-project,
  user-status,
  variable
                        The GitLab resource to manipulate.

@JohnVillalovos JohnVillalovos force-pushed the jlvillal/johns_crappy_vertical_help branch from b028757 to 72bf9c9 Compare July 28, 2022 00:00
@JohnVillalovos JohnVillalovos force-pushed the jlvillal/johns_crappy_vertical_help branch from 72bf9c9 to 0e09b32 Compare July 28, 2022 00:05
@JohnVillalovos JohnVillalovos marked this pull request as draft July 28, 2022 00:06
@JohnVillalovos
Copy link
Member Author

@weakcamel Would be interested to get your feedback on this. I was thinking if people like it we could add it to your PR.

What I like about it, is that it is less code. But without having first seeing your PR I would never have had this idea. So I would prefer if you get credit for it!

@weakcamel
Copy link
Contributor

@JohnVillalovos I like it for its simplicity. It feels further away from argparse's logic than my original code, but nothing's wrong with that; it's a custom formatter anyway.

@nejch nejch deleted the jlvillal/johns_crappy_vertical_help branch August 1, 2022 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants