codegen

package
v0.4.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

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

func Generate

func Generate(packageName string, specs []Spec) ([]byte, error)

Generate emits Go source with Apply* functions that map minitoml.Document keys onto structs. Key paths are resolved at generation time; generated code does not use reflection or tag parsing.

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 absolute parent config key from a dependon tag. When the
	// parent reads as empty, this field is omitted from provenance output.
	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
	// 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
}

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL