Skip to content
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

[Rust Server] Add auto-generated CLI Client #19392

Merged
merged 10 commits into from
Aug 24, 2024

Conversation

richardwhiuk
Copy link
Contributor

Changes

CLI Client

This adds an auto-generated CLI client to the Rust Server generator. This uses the Rust client library generated by the Rust Server generator.

This provides:

  • A usable client in its own right which can be used for testing APIs.
  • A more fully featured example client for developers to build from.

This client is optionally built, controlled by a feature (cli) on the Rust crate, and exists as a separate target. The CLI client supports HTTP bearer authentication (both Basic, and OAuth2). It will prompt for the user to confirm on potentially destructive DELETE requests, unless a confirm flag is passed. On platforms that support OpenSSL, it supports client and server side TLS, with a pinned server certificate if requested.

Simple arguments to requests can be passed as is, with booleans supported via flags. Complex types can be passed as JSON.

Additional testing

As part of development of the CLI tool, a couple of additional regression tests have been added:

  • Testing of multiple path parameters
  • Testing of boolean parameters, including boolean parameters with the same first letter (which thus cause clashes in generating CLI short options).
  • Testing of HTML special characters (such as apostrophes) in operation descriptions

Contributors

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package 
    ./bin/generate-samples.sh ./bin/configs/*.yaml
    ./bin/utils/export_docs_generators.sh
    
    (For Windows users, please run the script in Git BASH)
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
  • File the PR against the correct branch: master (upcoming 7.6.0 minor release - breaking changes with fallbacks), 8.0.x (breaking changes without fallbacks)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

Rust Technical Committee: @frol @farcaller @paladinzh @jacob-pro

@wing328
Copy link
Member

wing328 commented Aug 22, 2024

please review test failures (2) when you've time

@wing328 wing328 added this to the 7.9.0 milestone Aug 24, 2024
@wing328 wing328 merged commit 2b40a2c into OpenAPITools:master Aug 24, 2024
19 checks passed
@richardwhiuk richardwhiuk deleted the rust-server-cli branch September 16, 2024 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants