Getting Started#

gcraft parses a struct or interface with go/ast and writes a <type>_gen.go file next to it — no reflection, no runtime dependency on gcraft itself.

Your first generation#

// user.go
package model

type User struct {
	Name  string
	Email string
	Age   int
}
gcraft generate -type User -src ./user.go

This creates user_gen.go with a Builder, Validator, and Clone method, all enabled by default.

Disable specific generators#

gcraft generate -type Repository -src ./repo.go -builder=false

Custom output path#

gcraft generate -type Order -src ./models/ -out ./models/order_gen.go

All flags#

gcraft generate -type [flags] -builder generate Builder pattern (default true)

-clone generate Clone method (default true)

-mock generate Mock, interfaces only (default true)

-out string output file (default: _gen.go)

-src string source file or directory (default “.”)

-type string type name to generate for (required)

-validate generate Validator (default true)

Next: read about each generator — Builder, Validator, Clone, Mock.