Skip to content

Commit c17d07c

Browse files
committed
Fix generation of CopyFromTerraformToPango functions
1 parent afeb805 commit c17d07c

File tree

1 file changed

+30
-27
lines changed
  • pkg/translate/terraform_provider

1 file changed

+30
-27
lines changed

pkg/translate/terraform_provider/funcs.go

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,53 +21,56 @@ type EntryData struct {
2121
}
2222

2323
type spec struct {
24-
Name string
25-
FunctionSuffix string
26-
PangoType string
27-
TerraformType string
28-
Params map[string]*properties.SpecParam
29-
OneOf map[string]*properties.SpecParam
24+
Name string
25+
ParentFunctionSuffix string
26+
FunctionSuffix string
27+
PangoType string
28+
TerraformType string
29+
Params map[string]*properties.SpecParam
30+
OneOf map[string]*properties.SpecParam
3031
}
3132

32-
func getReturnPangoTypeForProperty(pkgName string, prop *properties.SpecParam) string {
33+
func getReturnPangoTypeForProperty(pkgName string, parent string, prop *properties.SpecParam) string {
3334
if prop.Type == "" {
34-
return fmt.Sprintf("%s.%s", pkgName, prop.Name.CamelCase)
35+
return fmt.Sprintf("%s.%s%s", pkgName, parent, prop.Name.CamelCase)
3536
} else if prop.Type == "list" {
3637
if prop.Items.Type == "" {
37-
return fmt.Sprintf("[]%s.%s", pkgName, prop.Name.CamelCase)
38+
return fmt.Sprintf("[]%s.%s%s", pkgName, parent, prop.Name.CamelCase)
3839
} else {
39-
return fmt.Sprintf("[]%s.%s", pkgName, prop.Type)
40+
return fmt.Sprintf("[]%s.%s%s", pkgName, parent, prop.Type)
4041
}
4142
} else {
4243
if prop.Required {
43-
return fmt.Sprintf("%s.%s", pkgName, prop.Type)
44+
return fmt.Sprintf("%s.%s%s", pkgName, parent, prop.Type)
4445
} else {
45-
return fmt.Sprintf("%s.%s", pkgName, prop.Type)
46+
return fmt.Sprintf("%s.%s%s", pkgName, parent, prop.Type)
4647
}
4748
}
4849
}
4950

50-
func generateFromTerraformToPangoSpec(pkgName string, parent string, prop *properties.SpecParam) []spec {
51+
func generateFromTerraformToPangoSpec(pkgName string, structName string, parent string, prop *properties.SpecParam) []spec {
5152
var specs []spec
5253
if prop.Type == "" {
53-
name := fmt.Sprintf("%s%s", parent, prop.Name.CamelCase)
54-
terraformType := fmt.Sprintf("%s%sObject", parent, prop.Name.CamelCase)
55-
returnType := getReturnPangoTypeForProperty(pkgName, prop)
54+
name := fmt.Sprintf("%s", prop.Name.CamelCase)
55+
terraformType := fmt.Sprintf("%s%s%sObject", structName, parent, prop.Name.CamelCase)
56+
returnType := getReturnPangoTypeForProperty(pkgName, parent, prop)
5657
specs = append(specs, spec{
57-
Name: name,
58-
TerraformType: terraformType,
59-
PangoType: returnType,
60-
FunctionSuffix: name,
61-
Params: prop.Spec.Params,
62-
OneOf: prop.Spec.OneOf,
58+
Name: name,
59+
TerraformType: terraformType,
60+
PangoType: returnType,
61+
ParentFunctionSuffix: fmt.Sprintf("%s%s", structName, parent),
62+
FunctionSuffix: fmt.Sprintf("%s%s", structName, name),
63+
Params: prop.Spec.Params,
64+
OneOf: prop.Spec.OneOf,
6365
})
6466

67+
parent += name
6568
for _, p := range prop.Spec.Params {
66-
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, name, p)...)
69+
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, parent, p)...)
6770
}
6871

6972
for _, p := range prop.Spec.OneOf {
70-
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, name, p)...)
73+
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, parent, p)...)
7174
}
7275

7376
}
@@ -77,7 +80,7 @@ func generateFromTerraformToPangoSpec(pkgName string, parent string, prop *prope
7780
const copyNestedFromTerraformToPangoStr = `
7881
{{- range .Specs }}
7982
{{- $spec := . }}
80-
func CopyFromTerraformToPango{{ .Name }}(obj *{{ .TerraformType }}) *{{ .PangoType }} {
83+
func CopyFromTerraformToPango{{ .ParentFunctionSuffix }}{{ .Name }}(obj *{{ .TerraformType }}) *{{ .PangoType }} {
8184
return &{{ .PangoType }}{
8285
{{- range .Params }}
8386
{{- if eq .Type "" }}
@@ -103,13 +106,13 @@ func CopyNestedFromTerraformToPango(pkgName string, structName string, props *pr
103106
var specs []spec
104107
for _, elt := range props.Spec.Params {
105108
if elt.Type == "" {
106-
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, elt)...)
109+
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, "", elt)...)
107110
}
108111
}
109112

110113
for _, elt := range props.Spec.OneOf {
111114
if elt.Type == "" {
112-
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, elt)...)
115+
specs = append(specs, generateFromTerraformToPangoSpec(pkgName, structName, "", elt)...)
113116
}
114117
}
115118

0 commit comments

Comments
 (0)