Skip to content

Commit f6e5011

Browse files
committed
feat(codegen): Add support for overriding gosdk parameter names
1 parent 62756e3 commit f6e5011

File tree

4 files changed

+33
-22
lines changed

4 files changed

+33
-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
}
@@ -589,6 +598,7 @@ func schemaParameterToSpecParameter(schemaSpec *parameter.Parameter) (*SpecParam
589598
}
590599

591600
goSdkConfig = &SpecParamGoSdkConfig{
601+
Name: schemaSpec.CodegenOverrides.GoSdk.Name,
592602
Skip: schemaSpec.CodegenOverrides.GoSdk.Skip,
593603
}
594604
}

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: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ func renderSpecsForParams(ancestors []*properties.SpecParam, params []*propertie
9090
}
9191

9292
specs = append(specs, parameterSpec{
93-
PangoName: elt.Name,
94-
TerraformName: elt.NameVariant(),
93+
PangoName: elt.PangoNameVariant(),
94+
TerraformName: elt.TerraformNameVariant(),
9595
ComplexType: elt.ComplexType(),
9696
Type: elt.FinalType(),
9797
ItemsType: itemsType,
@@ -109,10 +109,10 @@ func generateFromTerraformToPangoSpec(pangoTypePrefix string, terraformPrefix st
109109

110110
var specs []spec
111111

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

114-
pangoReturnType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.Name.CamelCase)
115-
terraformType := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.NameVariant().CamelCase)
114+
pangoReturnType := fmt.Sprintf("%s%s", pangoTypePrefix, paramSpec.PangoNameVariant().CamelCase)
115+
terraformType := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.TerraformNameVariant().CamelCase)
116116

117117
ancestors = append(ancestors, paramSpec)
118118

@@ -142,7 +142,7 @@ func generateFromTerraformToPangoSpec(pangoTypePrefix string, terraformPrefix st
142142
continue
143143
}
144144

145-
terraformPrefix := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.NameVariant().CamelCase)
145+
terraformPrefix := fmt.Sprintf("%s%s", terraformPrefix, paramSpec.TerraformNameVariant().CamelCase)
146146
specs = append(specs, generateFromTerraformToPangoSpec(pangoType, terraformPrefix, elt, ancestors)...)
147147
}
148148
}
@@ -1338,7 +1338,7 @@ func generateValidatorFnsMapForVariants(variants []*properties.SpecParam) map[in
13381338
}
13391339
}
13401340

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

13441344
validatorFns[elt.VariantGroupId] = validator
@@ -1365,7 +1365,7 @@ func createSchemaSpecForParameter(schemaTyp properties.SchemaType, manager *impo
13651365
}
13661366
}
13671367

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

13701370
var attributes []attributeCtx
13711371
if param.HasEntryName() {
@@ -1609,7 +1609,7 @@ func createSchemaAttributeForParameter(schemaTyp properties.SchemaType, manager
16091609

16101610
return attributeCtx{
16111611
Package: packageName,
1612-
Name: param.NameVariant(),
1612+
Name: param.TerraformNameVariant(),
16131613
SchemaType: schemaType,
16141614
ElementType: elementType,
16151615
Description: param.Description,
@@ -2457,7 +2457,7 @@ func terraformTypeForProperty(structPrefix string, prop *properties.SpecParam, h
24572457
if hackStructsAsTypeObjects {
24582458
return "types.Object"
24592459
} else {
2460-
return fmt.Sprintf("*%s%sObject", structPrefix, prop.NameVariant().CamelCase)
2460+
return fmt.Sprintf("*%s%sObject", structPrefix, prop.TerraformNameVariant().CamelCase)
24612461
}
24622462
}
24632463

@@ -2486,10 +2486,10 @@ func terraformTypeForProperty(structPrefix string, prop *properties.SpecParam, h
24862486
}
24872487

24882488
func structFieldSpec(param *properties.SpecParam, structPrefix string, hackStructsAsTypeObjects bool) datasourceStructFieldSpec {
2489-
tfTag := fmt.Sprintf("`tfsdk:\"%s\"`", param.NameVariant().Underscore)
2489+
tfTag := fmt.Sprintf("`tfsdk:\"%s\"`", param.TerraformNameVariant().Underscore)
24902490

24912491
return datasourceStructFieldSpec{
2492-
Name: param.NameVariant(),
2492+
Name: param.TerraformNameVariant(),
24932493
TerraformType: terraformTypeForProperty(structPrefix, param, false),
24942494
Type: terraformTypeForProperty(structPrefix, param, hackStructsAsTypeObjects),
24952495
Tags: []string{tfTag},
@@ -2499,7 +2499,7 @@ func structFieldSpec(param *properties.SpecParam, structPrefix string, hackStruc
24992499
func dataSourceStructContextForParam(structPrefix string, param *properties.SpecParam, hackStructsAsTypeObjects bool) []datasourceStructSpec {
25002500
var structs []datasourceStructSpec
25012501

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

25042504
var fields []datasourceStructFieldSpec
25052505

@@ -2528,7 +2528,7 @@ func dataSourceStructContextForParam(structPrefix string, param *properties.Spec
25282528
}
25292529

25302530
structs = append(structs, datasourceStructSpec{
2531-
AncestorName: param.NameVariant().Original,
2531+
AncestorName: param.TerraformNameVariant().Original,
25322532
HasEntryName: param.HasEntryName(),
25332533
StructName: structName,
25342534
ModelOrObject: "Object",

0 commit comments

Comments
 (0)