Skip to content

Commit 52c5aaa

Browse files
committed
Sort schema keys when generating missing templates to ensure deterministic stdout.
1 parent ad8078c commit 52c5aaa

1 file changed

Lines changed: 41 additions & 4 deletions

File tree

internal/provider/generate.go

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os/exec"
1111
"path/filepath"
1212
"runtime"
13+
"sort"
1314
"strings"
1415

1516
"github.com/hashicorp/cli"
@@ -443,7 +444,16 @@ func (g *generator) generateMissingProviderTemplate() error {
443444

444445
func (g *generator) generateMissingTemplates(providerSchema *tfjson.ProviderSchema) error {
445446
g.infof("generating missing resource content")
446-
for name, schema := range providerSchema.ResourceSchemas {
447+
448+
resourceKeys := make([]string, 0, len(providerSchema.ResourceSchemas))
449+
for key := range providerSchema.ResourceSchemas {
450+
resourceKeys = append(resourceKeys, key)
451+
}
452+
sort.Strings(resourceKeys)
453+
454+
for _, name := range resourceKeys {
455+
schema := providerSchema.ResourceSchemas[name]
456+
447457
if g.ignoreDeprecated && schema.Block.Deprecated {
448458
continue
449459
}
@@ -455,7 +465,16 @@ func (g *generator) generateMissingTemplates(providerSchema *tfjson.ProviderSche
455465
}
456466

457467
g.infof("generating missing data source content")
458-
for name, schema := range providerSchema.DataSourceSchemas {
468+
469+
dataSourceKeys := make([]string, 0, len(providerSchema.DataSourceSchemas))
470+
for key := range providerSchema.DataSourceSchemas {
471+
dataSourceKeys = append(dataSourceKeys, key)
472+
}
473+
sort.Strings(dataSourceKeys)
474+
475+
for _, name := range dataSourceKeys {
476+
schema := providerSchema.DataSourceSchemas[name]
477+
459478
if g.ignoreDeprecated && schema.Block.Deprecated {
460479
continue
461480
}
@@ -467,7 +486,16 @@ func (g *generator) generateMissingTemplates(providerSchema *tfjson.ProviderSche
467486
}
468487

469488
g.infof("generating missing function content")
470-
for name, signature := range providerSchema.Functions {
489+
490+
functionKeys := make([]string, 0, len(providerSchema.Functions))
491+
for key := range providerSchema.Functions {
492+
functionKeys = append(functionKeys, key)
493+
}
494+
sort.Strings(functionKeys)
495+
496+
for _, name := range functionKeys {
497+
signature := providerSchema.Functions[name]
498+
471499
if g.ignoreDeprecated && signature.DeprecationMessage != "" {
472500
continue
473501
}
@@ -479,7 +507,16 @@ func (g *generator) generateMissingTemplates(providerSchema *tfjson.ProviderSche
479507
}
480508

481509
g.infof("generating missing ephemeral resource content")
482-
for name, schema := range providerSchema.EphemeralResourceSchemas {
510+
511+
ephemeralKeys := make([]string, 0, len(providerSchema.EphemeralResourceSchemas))
512+
for key := range providerSchema.EphemeralResourceSchemas {
513+
ephemeralKeys = append(ephemeralKeys, key)
514+
}
515+
sort.Strings(ephemeralKeys)
516+
517+
for _, name := range ephemeralKeys {
518+
schema := providerSchema.EphemeralResourceSchemas[name]
519+
483520
if g.ignoreDeprecated && schema.Block.Deprecated {
484521
continue
485522
}

0 commit comments

Comments
 (0)