Skip to content

Commit aece761

Browse files
committed
feat(codegen): Add support for overriding gosdk parameter names
1 parent dd23445 commit aece761

File tree

4 files changed

+36
-22
lines changed

4 files changed

+36
-22
lines changed

pkg/properties/normalized.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ type SpecParam struct {
192192
}
193193

194194
type SpecParamGoSdkConfig struct {
195+
Name *string
195196
Skip *bool `json:"skip" yaml:"skip"`
196197
}
197198

@@ -271,7 +272,15 @@ func (o *Spec) SortedOneOf() []*SpecParam {
271272
return params
272273
}
273274

274-
func (o *SpecParam) NameVariant() *NameVariant {
275+
func (o *SpecParam) PangoNameVariant() *NameVariant {
276+
if o.GoSdkConfig != nil && o.GoSdkConfig.Name != nil {
277+
return NewNameVariant(*o.GoSdkConfig.Name)
278+
}
279+
280+
return o.Name
281+
}
282+
283+
func (o *SpecParam) TerraformNameVariant() *NameVariant {
275284
if o.TerraformProviderConfig != nil && o.TerraformProviderConfig.Name != nil {
276285
return NewNameVariant(*o.TerraformProviderConfig.Name)
277286
}
@@ -596,6 +605,7 @@ func schemaParameterToSpecParameter(schemaSpec *parameter.Parameter) (*SpecParam
596605
}
597606

598607
goSdkConfig = &SpecParamGoSdkConfig{
608+
Name: schemaSpec.CodegenOverrides.GoSdk.Name,
599609
Skip: schemaSpec.CodegenOverrides.GoSdk.Skip,
600610
}
601611
}

pkg/schema/parameter/parameter.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ const (
5252
)
5353

5454
type CodegenOverridesGoSdk struct {
55-
Skip *bool `yaml:"skip"`
55+
Name *string `yaml:"name"`
56+
Skip *bool `yaml:"skip"`
5657
}
5758

5859
type CodegenOverridesTerraform struct {

pkg/translate/structs.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,9 @@ func calculateNestedSpecType(parent string, param *properties.SpecParam) string
375375
func calculateNestedXmlSpecType(structTyp structType, parentName *properties.NameVariant, param *properties.SpecParam, suffix string) *properties.NameVariant {
376376
var typ *properties.NameVariant
377377
if parentName.IsEmpty() {
378-
typ = param.Name
378+
typ = param.PangoNameVariant()
379379
} else {
380-
typ = parentName.WithSuffix(param.Name)
380+
typ = parentName.WithSuffix(param.PangoNameVariant())
381381
}
382382

383383
if structTyp == structXmlType {
@@ -653,7 +653,7 @@ func createStructSpecForXmlListContainer(prefix *properties.NameVariant, param *
653653
return []entryStructContext{{
654654
IsXmlContainer: true,
655655
Fields: fields,
656-
name: prefix.WithSuffix(param.Name).WithSuffix(properties.NewNameVariant("container")),
656+
name: prefix.WithSuffix(param.PangoNameVariant()).WithSuffix(properties.NewNameVariant("container")),
657657
version: version,
658658
}}
659659
}
@@ -702,7 +702,7 @@ func createEntryXmlStructSpecsForParameter(structTyp structType, parentPrefix *p
702702
fieldType := getFieldTypeForParam(param)
703703

704704
fields = append(fields, entryStructFieldContext{
705-
Name: param.Name,
705+
Name: param.PangoNameVariant(),
706706
Required: param.Required,
707707
FieldType: fieldType,
708708
Type: typ,
@@ -737,7 +737,7 @@ func createEntryXmlStructSpecsForParameter(structTyp structType, parentPrefix *p
737737
Tags: "`xml:\",any\"`",
738738
})
739739

740-
name := parentPrefix.WithSuffix(param.Name)
740+
name := parentPrefix.WithSuffix(param.PangoNameVariant())
741741
entries = append([]entryStructContext{{
742742
Fields: fields,
743743
name: name,
@@ -810,7 +810,7 @@ func creasteStructSpecsForNormalization(structTyp structType, parentPrefix *prop
810810
fieldType := getFieldTypeForParam(param)
811811

812812
fields = append(fields, entryStructFieldContext{
813-
Name: param.Name,
813+
Name: param.PangoNameVariant(),
814814
Required: param.Required,
815815
FieldType: fieldType,
816816
Type: typ,

pkg/translate/terraform_provider/funcs.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ func renderSpecsForParams(params []*properties.SpecParam, parentNames []string)
8080
}
8181

8282
specs = append(specs, parameterSpec{
83-
PangoName: elt.Name,
84-
TerraformName: elt.NameVariant(),
83+
PangoName: elt.PangoNameVariant(),
84+
TerraformName: elt.TerraformNameVariant(),
8585
ComplexType: elt.ComplexType(),
8686
Type: elt.FinalType(),
8787
ItemsType: itemsType,
@@ -99,10 +99,10 @@ func generateFromTerraformToPangoSpec(pangoTypePrefix string, terraformPrefix st
9999

100100
var specs []spec
101101

102-
pangoType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.Name.CamelCase)
102+
pangoType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.PangoNameVariant().CamelCase)
103103

104-
pangoReturnType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.Name.CamelCase)
105-
terraformType := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.NameVariant().CamelCase)
104+
pangoReturnType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.PangoNameVariant().CamelCase)
105+
terraformType := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.TerraformNameVariant().CamelCase)
106106

107107
parentNames = append(parentNames, paramSpec.Name.Underscore)
108108

@@ -132,8 +132,8 @@ func generateFromTerraformToPangoSpec(pangoTypePrefix string, terraformPrefix st
132132
continue
133133
}
134134

135-
terraformPrefix := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.NameVariant().CamelCase)
136-
specs = append(specs, generateFromTerraformToPangoSpec(pangoType, terraformPrefix, elt, parentNames)...)
135+
terraformPrefix := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.TerraformNameVariant().CamelCase)
136+
specs = append(specs, generateFromTerraformToPangoSpec(pangoType, terraformPrefix, elt, ancestors)...)
137137
}
138138
}
139139

@@ -1181,7 +1181,7 @@ func generateValidatorFnsMapForVariants(variants []*properties.SpecParam) map[in
11811181
}
11821182
}
11831183

1184-
pathExpr := fmt.Sprintf(`path.MatchRelative().AtParent().AtName("%s")`, elt.Name.Underscore)
1184+
pathExpr := fmt.Sprintf(`path.MatchRelative().AtParent().AtName("%s")`, elt.TerraformNameVariant().Underscore)
11851185
validator.Expressions = append(validator.Expressions, pathExpr)
11861186

11871187
validatorFns[elt.VariantGroupId] = validator
@@ -1208,7 +1208,7 @@ func createSchemaSpecForParameter(schemaTyp properties.SchemaType, manager *impo
12081208
}
12091209
}
12101210

1211-
structName := fmt.Sprintf("%s%s", structPrefix, param.NameVariant().CamelCase)
1211+
structName := fmt.Sprintf("%s%s", structPrefix, param.TerraformNameVariant().CamelCase)
12121212

12131213
var attributes []attributeCtx
12141214
if param.HasEntryName() {
@@ -1452,7 +1452,7 @@ func createSchemaAttributeForParameter(schemaTyp properties.SchemaType, manager
14521452

14531453
return attributeCtx{
14541454
Package: packageName,
1455-
Name: param.NameVariant(),
1455+
Name: param.TerraformNameVariant(),
14561456
SchemaType: schemaType,
14571457
ElementType: elementType,
14581458
Description: param.Description,
@@ -2305,7 +2305,7 @@ func terraformTypeForProperty(structPrefix string, prop *properties.SpecParam, h
23052305
if hackStructsAsTypeObjects {
23062306
return "types.Object"
23072307
} else {
2308-
return fmt.Sprintf("*%s%sObject", structPrefix, prop.NameVariant().CamelCase)
2308+
return fmt.Sprintf("*%s%sObject", structPrefix, prop.TerraformNameVariant().CamelCase)
23092309
}
23102310
}
23112311

@@ -2334,9 +2334,10 @@ func terraformTypeForProperty(structPrefix string, prop *properties.SpecParam, h
23342334
}
23352335

23362336
func structFieldSpec(param *properties.SpecParam, structPrefix string, hackStructsAsTypeObjects bool) datasourceStructFieldSpec {
2337-
tfTag := fmt.Sprintf("`tfsdk:\"%s\"`", param.NameVariant().Underscore)
2337+
tfTag := fmt.Sprintf("`tfsdk:\"%s\"`", param.TerraformNameVariant().Underscore)
2338+
23382339
return datasourceStructFieldSpec{
2339-
Name: param.NameVariant(),
2340+
Name: param.TerraformNameVariant(),
23402341
TerraformType: terraformTypeForProperty(structPrefix, param, false),
23412342
Type: terraformTypeForProperty(structPrefix, param, hackStructsAsTypeObjects),
23422343
Tags: []string{tfTag},
@@ -2346,7 +2347,7 @@ func structFieldSpec(param *properties.SpecParam, structPrefix string, hackStruc
23462347
func dataSourceStructContextForParam(structPrefix string, param *properties.SpecParam, hackStructsAsTypeObjects bool) []datasourceStructSpec {
23472348
var structs []datasourceStructSpec
23482349

2349-
structName := fmt.Sprintf("%s%s", structPrefix, param.NameVariant().CamelCase)
2350+
structName := fmt.Sprintf("%s%s", structPrefix, param.TerraformNameVariant().CamelCase)
23502351

23512352
var fields []datasourceStructFieldSpec
23522353

@@ -2375,6 +2376,8 @@ func dataSourceStructContextForParam(structPrefix string, param *properties.Spec
23752376
}
23762377

23772378
structs = append(structs, datasourceStructSpec{
2379+
AncestorName: param.TerraformNameVariant().Original,
2380+
HasEntryName: param.HasEntryName(),
23782381
StructName: structName,
23792382
ModelOrObject: "Object",
23802383
Fields: fields,

0 commit comments

Comments
 (0)