Smithy code generators for Go and the accompanying smithy-go runtime.
The smithy-go runtime requires a minimum version of Go 1.22.
WARNING: All interfaces are subject to change.
Can I use the code generators?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 other than the new smithy.protocols#rpcv2Cbor
, therefore the useability of this project on its own is currently limited. 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.
This repository implements the following Smithy build plugins:
ID GAV prefix Descriptiongo-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.
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()
.
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. Supported protocols Example
This example applies the go-codegen
build plugin to the Smithy quickstart example created from smithy init
:
{
"version": "1.0",
"sources": [
"models"
],
"maven": {
"dependencies": [
"software.amazon.smithy.go:smithy-go-codegen:0.1.0"
]
},
"plugins": {
"go-codegen": {
"service": "example.weather#Weather",
"module": "github.com/example/weather",
"generateGoMod": true,
"goDirective": "1.22"
}
}
}
go-server-codegen
This plugin is a work-in-progress and is currently undocumented.
LicenseThis project is licensed under the Apache-2.0 License.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4