Skip to content

Commit 2137133

Browse files
committed
feat: add embedded structs to generated go code
1 parent 4776b3f commit 2137133

File tree

3 files changed

+28
-7
lines changed

3 files changed

+28
-7
lines changed

cmd/generatego/main-generatego.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func GenerateWaveObjMetaConsts() error {
5656
fmt.Fprintf(os.Stderr, "generating waveobj meta consts file to %s\n", WaveObjMetaConstsFileName)
5757
var buf strings.Builder
5858
gogen.GenerateBoilerplate(&buf, "waveobj", []string{})
59-
gogen.GenerateMetaMapConsts(&buf, "MetaKey_", reflect.TypeOf(waveobj.MetaTSType{}))
59+
gogen.GenerateMetaMapConsts(&buf, "MetaKey_", reflect.TypeOf(waveobj.MetaTSType{}), false)
6060
buf.WriteString("\n")
6161
written, err := utilfn.WriteFileIfDifferent(WaveObjMetaConstsFileName, []byte(buf.String()))
6262
if !written {
@@ -69,7 +69,7 @@ func GenerateSettingsMetaConsts() error {
6969
fmt.Fprintf(os.Stderr, "generating settings meta consts file to %s\n", SettingsMetaConstsFileName)
7070
var buf strings.Builder
7171
gogen.GenerateBoilerplate(&buf, "wconfig", []string{})
72-
gogen.GenerateMetaMapConsts(&buf, "ConfigKey_", reflect.TypeOf(wconfig.SettingsType{}))
72+
gogen.GenerateMetaMapConsts(&buf, "ConfigKey_", reflect.TypeOf(wconfig.SettingsType{}), false)
7373
buf.WriteString("\n")
7474
written, err := utilfn.WriteFileIfDifferent(SettingsMetaConstsFileName, []byte(buf.String()))
7575
if !written {

pkg/gogen/gogen.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,23 @@ func getBeforeColonPart(s string) string {
3333
return s
3434
}
3535

36-
func GenerateMetaMapConsts(buf *strings.Builder, constPrefix string, rtype reflect.Type) {
37-
buf.WriteString("const (\n")
36+
func GenerateMetaMapConsts(buf *strings.Builder, constPrefix string, rtype reflect.Type, embedded bool) {
37+
if !embedded {
38+
buf.WriteString("const (\n")
39+
}
3840
var lastBeforeColon = ""
3941
isFirst := true
4042
for idx := 0; idx < rtype.NumField(); idx++ {
4143
field := rtype.Field(idx)
4244
if field.PkgPath != "" {
4345
continue
4446
}
47+
if field.Anonymous {
48+
var embeddedBuf strings.Builder
49+
GenerateMetaMapConsts(&embeddedBuf, constPrefix, field.Type, true)
50+
buf.WriteString(embeddedBuf.String())
51+
continue
52+
}
4553
fieldName := field.Name
4654
jsonTag := utilfn.GetJsonTag(field)
4755
if jsonTag == "" {
@@ -58,7 +66,9 @@ func GenerateMetaMapConsts(buf *strings.Builder, constPrefix string, rtype refle
5866
buf.WriteString(fmt.Sprintf("\t%-40s = %q\n", cname, jsonTag))
5967
isFirst = false
6068
}
61-
buf.WriteString(")\n")
69+
if !embedded {
70+
buf.WriteString(")\n")
71+
}
6272
}
6373

6474
func GenMethod_Call(buf *strings.Builder, methodDecl *wshrpc.WshRpcMethodDecl) {

pkg/wconfig/metaconsts.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,19 @@ const (
99
ConfigKey_AppClear = "app:*"
1010
ConfigKey_AppGlobalHotkey = "app:globalhotkey"
1111
ConfigKey_AppDismissArchitectureWarning = "app:dismissarchitecturewarning"
12-
13-
ConfigKey_AiSettingsType = "AiSettingsType"
12+
ConfigKey_AiClear = "ai:*"
13+
ConfigKey_AiPreset = "ai:preset"
14+
ConfigKey_AiApiType = "ai:apitype"
15+
ConfigKey_AiBaseURL = "ai:baseurl"
16+
ConfigKey_AiApiToken = "ai:apitoken"
17+
ConfigKey_AiName = "ai:name"
18+
ConfigKey_AiModel = "ai:model"
19+
ConfigKey_AiOrgID = "ai:orgid"
20+
ConfigKey_AIApiVersion = "ai:apiversion"
21+
ConfigKey_AiMaxTokens = "ai:maxtokens"
22+
ConfigKey_AiTimeoutMs = "ai:timeoutms"
23+
ConfigKey_AiFontSize = "ai:fontsize"
24+
ConfigKey_AiFixedFontSize = "ai:fixedfontsize"
1425

1526
ConfigKey_TermClear = "term:*"
1627
ConfigKey_TermFontSize = "term:fontsize"

0 commit comments

Comments
 (0)