周玉环 d906a41c2e first commit 2 өдөр өмнө
..
auth d906a41c2e first commit 2 өдөр өмнө
container d906a41c2e first commit 2 өдөр өмнө
context d906a41c2e first commit 2 өдөр өмнө
document d906a41c2e first commit 2 өдөр өмнө
encoding d906a41c2e first commit 2 өдөр өмнө
endpoints d906a41c2e first commit 2 өдөр өмнө
internal d906a41c2e first commit 2 өдөр өмнө
io d906a41c2e first commit 2 өдөр өмнө
logging d906a41c2e first commit 2 өдөр өмнө
metrics d906a41c2e first commit 2 өдөр өмнө
middleware d906a41c2e first commit 2 өдөр өмнө
private d906a41c2e first commit 2 өдөр өмнө
ptr d906a41c2e first commit 2 өдөр өмнө
rand d906a41c2e first commit 2 өдөр өмнө
sync d906a41c2e first commit 2 өдөр өмнө
time d906a41c2e first commit 2 өдөр өмнө
tracing d906a41c2e first commit 2 өдөр өмнө
transport d906a41c2e first commit 2 өдөр өмнө
waiter d906a41c2e first commit 2 өдөр өмнө
.gitignore d906a41c2e first commit 2 өдөр өмнө
.travis.yml d906a41c2e first commit 2 өдөр өмнө
CHANGELOG.md d906a41c2e first commit 2 өдөр өмнө
CODE_OF_CONDUCT.md d906a41c2e first commit 2 өдөр өмнө
CONTRIBUTING.md d906a41c2e first commit 2 өдөр өмнө
LICENSE d906a41c2e first commit 2 өдөр өмнө
Makefile d906a41c2e first commit 2 өдөр өмнө
NOTICE d906a41c2e first commit 2 өдөр өмнө
README.md d906a41c2e first commit 2 өдөр өмнө
changelog-template.json d906a41c2e first commit 2 өдөр өмнө
doc.go d906a41c2e first commit 2 өдөр өмнө
document.go d906a41c2e first commit 2 өдөр өмнө
errors.go d906a41c2e first commit 2 өдөр өмнө
go_module_metadata.go d906a41c2e first commit 2 өдөр өмнө
local-mod-replace.sh d906a41c2e first commit 2 өдөр өмнө
modman.toml d906a41c2e first commit 2 өдөр өмнө
properties.go d906a41c2e first commit 2 өдөр өмнө
validation.go d906a41c2e first commit 2 өдөр өмнө

README.md

Smithy Go

Go Build StatusCodegen Build Status

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.

:no_entry_sign: 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.

Supported protocols

Protocol Notes
smithy.protocols#rpcv2Cbor Event streaming not yet implemented.

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.24"
    }
  }
}

go-server-codegen

This plugin is a work-in-progress and is currently undocumented.

go-shape-codegen

This plugin is a work-in-progress and is currently undocumented.

License

This project is licensed under the Apache-2.0 License.