Smithy code generators for Go and the accompanying smithy-go runtime.
The smithy-go runtime requires a minimum version of Go 1.24.
WARNING: All interfaces are subject to change.
DO NOT use the code generators in this repository
The code generators in this repository do not generate working clients at
this time.
In order to generate a usable smithy client you must provide a protocol definition,
such as AWS restJson1,
in order to generate transport mechanisms and serialization/deserialization
code (“serde”) accordingly.
The code generator does not currently support any protocols out of the box.
Support for all AWS protocols
exists in aws-sdk-go-v2. We are
tracking the movement of those out of the SDK into smithy-go in
#458, but there’s currently no
timeline for doing so.
Plugins
This repository implements the following Smithy build plugins:
ID
GAV prefix
Description
go-codegen
software.amazon.smithy.go:smithy-go-codegen
Implements Go client code generation for Smithy models.
go-server-codegen
software.amazon.smithy.go:smithy-go-codegen
Implements Go server code generation for Smithy models.
go-shape-codegen
software.amazon.smithy.go:smithy-go-codegen
Implements Go shape code generation (types only) for Smithy models.
NOTE: Build plugins are not currently published to mavenCentral. You must publish to mavenLocal to make the build plugins visible to the Smithy CLI. The artifact version is currently fixed at 0.1.0.
go-codegen
Configuration
GoSettings
contains all of the settings enabled from smithy-build.json and helper
methods and types. The up-to-date list of top-level properties enabled for
go-client-codegen can be found in GoSettings::from().
Setting
Type
Required
Description
service
string
yes
The Shape ID of the service for which to generate the client.
module
string
yes
Name of the module in generated.json (and go.mod if generateGoMod is enabled) and doc.go.
generateGoMod
boolean
Whether to generate a default go.mod file. The default value is false.
goDirective
string
Go directive of the module. The default value is the minimum supported Go version.
Smithy Go
Smithy code generators for Go and the accompanying smithy-go runtime.
The smithy-go runtime requires a minimum version of Go 1.24.
WARNING: All interfaces are subject to change.
The code generators in this repository do not generate working clients at this time.
In order to generate a usable smithy client you must provide a protocol definition, such as AWS restJson1, in order to generate transport mechanisms and serialization/deserialization code (“serde”) accordingly.
The code generator does not currently support any protocols out of the box. Support for all AWS protocols exists in aws-sdk-go-v2. We are tracking the movement of those out of the SDK into smithy-go in #458, but there’s currently no timeline for doing so.
Plugins
This repository implements the following Smithy build plugins:
go-codegensoftware.amazon.smithy.go:smithy-go-codegengo-server-codegensoftware.amazon.smithy.go:smithy-go-codegengo-shape-codegensoftware.amazon.smithy.go:smithy-go-codegenNOTE: Build plugins are not currently published to mavenCentral. You must publish to mavenLocal to make the build plugins visible to the Smithy CLI. The artifact version is currently fixed at 0.1.0.
go-codegenConfiguration
GoSettingscontains all of the settings enabled fromsmithy-build.jsonand helper methods and types. The up-to-date list of top-level properties enabled forgo-client-codegencan be found inGoSettings::from().servicemodulegenerated.json(andgo.modifgenerateGoModis enabled) anddoc.go.generateGoModgo.modfile. The default value isfalse.goDirectiveSupported protocols
smithy.protocols#rpcv2CborExample
This example applies the
go-codegenbuild plugin to the Smithy quickstart example created fromsmithy init:go-server-codegenThis plugin is a work-in-progress and is currently undocumented.
go-shape-codegenThis plugin is a work-in-progress and is currently undocumented.
License
This project is licensed under the Apache-2.0 License.