func (me Go) Emit(state config.State) error { pkg := g.Package{ Name: "config", } for _, t := range state.Types { fields := make([]g.Field, len(t.Params)) for i, param := range t.Params { fields[i] = g.Field{ Name: makeGoName(param.GoName, param.Name), TypeName: typeName(state.Types, param.Type), Tag: fmt.Sprintf("`yaml:\"%s\"`", param.Name), } } pkg.Declare(g.Struct{ Name: makeGoName(t.GoName, t.Name), Fields: fields, }) } return pkg.WriteTo(os.Stdout) }