@@ -21,53 +21,56 @@ type EntryData struct {
21
21
}
22
22
23
23
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
30
31
}
31
32
32
- func getReturnPangoTypeForProperty (pkgName string , prop * properties.SpecParam ) string {
33
+ func getReturnPangoTypeForProperty (pkgName string , parent string , prop * properties.SpecParam ) string {
33
34
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 )
35
36
} else if prop .Type == "list" {
36
37
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 )
38
39
} else {
39
- return fmt .Sprintf ("[]%s.%s" , pkgName , prop .Type )
40
+ return fmt .Sprintf ("[]%s.%s%s " , pkgName , parent , prop .Type )
40
41
}
41
42
} else {
42
43
if prop .Required {
43
- return fmt .Sprintf ("%s.%s" , pkgName , prop .Type )
44
+ return fmt .Sprintf ("%s.%s%s " , pkgName , parent , prop .Type )
44
45
} else {
45
- return fmt .Sprintf ("%s.%s" , pkgName , prop .Type )
46
+ return fmt .Sprintf ("%s.%s%s " , pkgName , parent , prop .Type )
46
47
}
47
48
}
48
49
}
49
50
50
- func generateFromTerraformToPangoSpec (pkgName string , parent string , prop * properties.SpecParam ) []spec {
51
+ func generateFromTerraformToPangoSpec (pkgName string , structName string , parent string , prop * properties.SpecParam ) []spec {
51
52
var specs []spec
52
53
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 )
56
57
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 ,
63
65
})
64
66
67
+ parent += name
65
68
for _ , p := range prop .Spec .Params {
66
- specs = append (specs , generateFromTerraformToPangoSpec (pkgName , name , p )... )
69
+ specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , parent , p )... )
67
70
}
68
71
69
72
for _ , p := range prop .Spec .OneOf {
70
- specs = append (specs , generateFromTerraformToPangoSpec (pkgName , name , p )... )
73
+ specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , parent , p )... )
71
74
}
72
75
73
76
}
@@ -77,7 +80,7 @@ func generateFromTerraformToPangoSpec(pkgName string, parent string, prop *prope
77
80
const copyNestedFromTerraformToPangoStr = `
78
81
{{- range .Specs }}
79
82
{{- $spec := . }}
80
- func CopyFromTerraformToPango{{ .Name }}(obj *{{ .TerraformType }}) *{{ .PangoType }} {
83
+ func CopyFromTerraformToPango{{ .ParentFunctionSuffix }}{{ . Name }}(obj *{{ .TerraformType }}) *{{ .PangoType }} {
81
84
return &{{ .PangoType }}{
82
85
{{- range .Params }}
83
86
{{- if eq .Type "" }}
@@ -103,13 +106,13 @@ func CopyNestedFromTerraformToPango(pkgName string, structName string, props *pr
103
106
var specs []spec
104
107
for _ , elt := range props .Spec .Params {
105
108
if elt .Type == "" {
106
- specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , elt )... )
109
+ specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , "" , elt )... )
107
110
}
108
111
}
109
112
110
113
for _ , elt := range props .Spec .OneOf {
111
114
if elt .Type == "" {
112
- specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , elt )... )
115
+ specs = append (specs , generateFromTerraformToPangoSpec (pkgName , structName , "" , elt )... )
113
116
}
114
117
}
115
118
0 commit comments