Skip to content

Code generation for the AWS SDK for Rust, as well as server and generic smithy client generation.

License

Notifications You must be signed in to change notification settings

smithy-lang/smithy-rs

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date
Aug 9, 2021
Jan 19, 2022
Dec 27, 2021
Jan 25, 2022
Jan 10, 2022
Jan 20, 2022
Jan 25, 2022
Jan 14, 2022
Jan 25, 2022
Jan 13, 2022
Oct 15, 2021
Jan 25, 2022
Jan 25, 2022
Feb 23, 2021
Dec 2, 2021
Jan 20, 2022
Jan 25, 2022
Nov 12, 2021
Oct 28, 2020
Apr 14, 2021
Oct 28, 2020
Oct 28, 2020
Nov 10, 2021
Jan 12, 2022
Jan 24, 2022
Oct 6, 2021
Oct 28, 2020
Jan 12, 2022
Jan 28, 2021

Repository files navigation

Smithy Rust status

Smithy code generators for Rust

The nightly SDK build can be found under Actions -> CI (take latest run) -> Artifacts

Design documentation (WIP)

All internal and external interfaces are considered unstable and subject to change without notice.

Setup

  1. ./gradlew will setup gradle for you. JDK 11 is required.
  2. Running tests requires a working Rust installation. See Rust docs for installation instructions on your platform. Minimum supported Rust version is the latest released Rust version, although older versions may work.

Generate an AWS SDK

The generated SDK will be placed in aws/sdk/build/aws-sdk.

./gradlew :aws:sdk:assemble # Generate an SDK. Do not attempt to compile / run tests
./gradlew :aws:sdk:test # Run all the tests
./gradlew :aws:sdk:cargoCheck # only validate that it compiles

Run tests

./test.sh

This will run all the unit tests, codegen example models & Dynamo DB, validate that the generated code compiles, and run any tests targeting the generated code.

Development

For development, pre-commit hooks may be useful. Setup:

brew install pre-commit # (or appropriate for your platform: https://pre-commit.com/)
pre-commit install

Project Layout

  • aws: AWS specific codegen & Rust code (signing, endpoints, customizations, etc.) Common commands:
    • ./gradlew :aws:sdk:assemble: Generate (but do not test / compile etc.) a fresh SDK into sdk/build/aws-sdk
    • ./gradlew :aws:sdk:test: Generate & run all tests for a fresh SDK
    • ./gradlew :aws:sdk:{cargoCheck, cargoTest, cargoDocs, cargoClippy}: Generate & run specified cargo command.
  • codegen: Whitelabel Smithy client code generation
  • codegen-test: Smithy protocol test generation & integration tests for Smithy client whitelabel code
  • design: Design documentation. See the design/README.md for details about building / viewing.
  • codegen-server: Whitelabel Smithy server code generation
  • codegen-server-test: Smithy protocol test generation & integration tests for Smithy server whitelabel code