Documentation
¶
Overview ¶
Package codegen emits reflection-free apply functions from intermediate minitoml.Document keys.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Field ¶
type Field struct {
// GoName is the exported Go field name.
GoName string
// Key is the relative TOML/intermediate key segment under the parent prefix.
Key string
// Kind is the field type.
Kind FieldKind
// Nested holds child fields when Kind is FieldStruct or FieldStructSlice.
// For FieldStructSlice they are the element struct's fields.
Nested []Field
// ElemType is the element struct's Go type name when Kind is FieldStructSlice.
ElemType string
// GoType is the Go type an integer field is assigned as (int64, uint32, or
// a defined type over one of them). Empty means int, which keeps the
// generated form of a plain int field unchanged.
GoType string
// Default is an optional default used when the key is absent (string form).
Default string
// Opt is an optional CLI name override ("long" or "long,short").
Opt string
// Env is an optional exact environment variable override, or "-" to disable it.
Env string
// Help is optional CLI/scaffold help text.
Help string
// Arg is a subcommand-only positional role: required, optional, or *.
Arg string
// DependsOn is the condition from a dependon tag: a parent config key, and
// optionally an operator and the values it selects. This field is omitted from
// provenance output while the condition fails.
DependsOn string
// Falsy is the enum choice from a falsy tag that means "off" for this field.
// An empty value resolves to it, and it hides fields that depend on this one.
Falsy string
// Enum is the raw allowlist from an enum tag. configbind reads it to check the
// values a dependon condition names against the choices the field can hold.
Enum string
// Secret is the disclosure mode from a secret tag: hide, mask, or show. On
// a nested struct it covers every field of the subtree.
Secret string
// Summary is the rating from a summary tag: omit, meaning a short surface may
// drop this key while nothing has set it. On a nested struct it covers every
// field of the subtree.
Summary string
}
Field describes one struct field for intermediate-form apply generation.
type FieldKind ¶
type FieldKind int
FieldKind is the Go field kind supported by the generator.
const ( // FieldString is a string field. FieldString FieldKind = iota // FieldBool is a bool field. FieldBool // FieldInt is an int field. FieldInt // FieldDuration is a time.Duration field parsed from a Go duration string. FieldDuration // FieldStringSlice is a []string field. FieldStringSlice // FieldStruct is a nested struct field. FieldStruct // FieldStructSlice is a slice of structs read from an array of tables. FieldStructSlice )
type IntFieldSpec ¶ added in v0.2.1
type IntFieldSpec struct {
// Name is the Go type the generated code converts to.
Name string
// Signed selects strconv.ParseInt over strconv.ParseUint.
Signed bool
// BitSize is the strconv bit size. Zero means the platform-sized int or
// uint, which is the value strconv itself takes for that case, so the
// accepted range follows the build target instead of the generator host.
BitSize int
}
IntFieldSpec describes how one integer field is parsed and assigned.
func IntFieldSpecOf ¶ added in v0.2.1
func IntFieldSpecOf(goType string) (IntFieldSpec, error)
IntFieldSpecOf resolves a Field.GoType. An empty name means int, so a field built before widths were carried keeps its exact generated form.
func (IntFieldSpec) ParseLiteral ¶ added in v0.2.1
func (s IntFieldSpec) ParseLiteral(text string) (string, error)
ParseLiteral reads one default value at the field's own width. The returned text is the value re-rendered as an untyped Go integer literal.
type Spec ¶
type Spec struct {
// TypeName is the Go struct type name (e.g. WebServiceConfig).
TypeName string
// Prefix is the Bind prefix / top-level TOML table (e.g. webservice).
Prefix string
// Fields are the struct fields.
Fields []Field
}
Spec describes one Bind-style config struct and its prefix table name.
func WebServiceFixtureSpec ¶
func WebServiceFixtureSpec() Spec
WebServiceFixtureSpec returns the representative Bind-style fixture used by tests and committed gen code.