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

[cli] Completions command for suggestions #213

Merged
merged 2 commits into from Jun 10, 2018

Conversation

Projects
None yet
2 participants
@jimschubert
Member

jimschubert commented Jun 3, 2018

This takes airlift's 'suggest' command and reuses it as a different
command name, 'completion'. This gives us in-built CLI completions which
are useful in the repo-level container's docker-entrypoint.sh. This
previously parsed Java files for conventional usage of Command
annotations, which is potentially buggy. The new implementation relies
only on CLI to provide command completion suggestions.

As part of this, we can prepare for bash completion scripts which can be
added to our homebrew formula. The new completion command will also
complete on command options, for example:

cli completion generate

This will provide all short and long form switches available to the
generate command.

Example (commands available globally):

$ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar completion
list
generate
meta
langs
help
config-help
validate
version
completion

Example (switches available to generate command):

$ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar completion generate
-c
--config
--invoker-package
--git-repo-id
--additional-properties
-t
--template-dir
--import-mappings
-v
--verbose
--model-name-suffix
--library
-s
--skip-overwrite
--artifact-id
--api-package
-D
--ignore-file-override
--model-package
--instantiation-types
--model-name-prefix
--git-user-id
-o
--output
--group-id
-l
--lang
-g
--generator-name
--language-specific-primitives
--artifact-version
--reserved-words-mappings
-a
--auth
-i
--input-spec
--release-note
--remove-operation-id-prefix
--type-mappings
--http-user-agent

Example (switches available to meta command):

$ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar completion meta
-n
--name
-p
--package
-o
--output

This also moves the exit code of 1 for executing the CLI with no args to after the run call, allowing CLI to execute the default command before exiting as an error.

/cc @jmini @wing328 (I don't know who is considered technical committee for CLI, maven plugin, etc)

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh and ./bin/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
[cli] Completions command for suggestions
This takes airlift's 'suggest' command and reuses it as a different
command name, 'completion'. This gives us in-built CLI completions which
are useful in the repo-level container's docker-entrypoint.sh. This
previously parsed Java files for conventional usage of Command
annotations, which is potentially buggy. The new implementation relies
only on CLI to provide command completion suggestions.

As part of this, we can prepare for bash completion scripts which can be
added to our homebrew formula.  The new completion command will also
complete on command options, for example:

cli completion generate

This will provide all short and long form switches available to the
generate command.
@@ -0,0 +1,99 @@
/*
* Copyright (C) 2010 the original author or authors.

This comment has been minimized.

@wing328

wing328 Jun 7, 2018

Member

Shall we update the above with the following instead?

 * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
 * Copyright 2018 SmartBear Software

This comment has been minimized.

@jimschubert

jimschubert Jun 7, 2018

Member

@wing328 we can't. Per comment below the header, I took this from the framework's suggest command and renamed it with a description. It's unfortunate that they have such a generic license text, because it makes it look like something that needs to be updated.

This comment has been minimized.

@jimschubert

jimschubert Jun 7, 2018

Member

Oh, or do you think we should add our line as a second line in the header?

This comment has been minimized.

@jimschubert

jimschubert Jun 8, 2018

Member

@wing328 I've added

* Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)

Below the line you've commented on, as this licensed file is originally from airlift/airline, not SmartBear.

This comment has been minimized.

@wing328

wing328 Jun 8, 2018

Member

Looks good to me

@wing328 wing328 added this to the 3.0.1 milestone Jun 7, 2018

@wing328

This comment has been minimized.

Member

wing328 commented Jun 7, 2018

@jimschubert the enhancement looks awesome. I'll give it a try tomorrow and let you know if I've any feedback.

@wing328

Tested locally and it works fine for me

@wing328 wing328 merged commit 640fd87 into OpenAPITools:master Jun 10, 2018

3 of 4 checks passed

ci/circleci Your tests failed on CircleCI
Details
Shippable Run 622 status is SUCCESS.
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details

@jimschubert jimschubert deleted the jimschubert:cli-commands-command branch Jun 10, 2018

jimschubert added a commit to jimschubert/openapi-generator that referenced this pull request Jun 12, 2018

Merge branch 'master' into generator-validation-option
* master: (26 commits)
  Prepare 3.0.1 release (OpenAPITools#280)
  [typescript-angular] strict type checking (OpenAPITools#218)
  [C++ server] Adjust the names (script, sample folder, generator) to lang option (OpenAPITools#250)
  Removed warnings for packages included in SDK for Net Core 2.0 (OpenAPITools#269)
  [cli] Completions command for suggestions (OpenAPITools#213)
  [Java][RestTemplate] Fix query parameter URL encoding (OpenAPITools#260)
  [cpp-qt5] Remove std::shared_ptr from Qt5 (OpenAPITools#267)
  Adds some links to the README (OpenAPITools#261)
  Update sec.gpg.enc to binary encoded secret
  Add gpg --check-trustdb, limit gpg to master
  Re-do encrypted gpg and reference in settings.xml
  Fix trailing semicolons in after_success Travis CI scripts
  Use ubuntu keyserver instead of mit (due to timeout)
  [gradle] Plugin release management (OpenAPITools#201)
  Updates small typo in qna.md (OpenAPITools#262)
  Fix ModelUtils.getUnusedSchema() (OpenAPITools#253)
  Add JaxRS to bin/ensure-up-to-date (OpenAPITools#248)
  feat(security): add cookie-auth support (OpenAPITools#240)
  Add 'unblu inc.' to company list (OpenAPITools#246)
  put company list in alphabetical order (OpenAPITools#244)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment