Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ package-lock.json
package.json
skaff/skaff
sweeper-bin
terraform-provider-aws
terraform-provider-aws*
terraform-providers-schema/
terraform.tfplan
terraform.tfstate
Expand Down
105 changes: 105 additions & 0 deletions internal/conns/awsclient_core_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions internal/conns/awsclient_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions internal/generate/awsclient/file.gtpl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
// SPDX-License-Identifier: MPL-2.0

// Code generated by internal/generate/awsclient/main.go; DO NOT EDIT.

//go:build {{ .BuildTags }}

package conns

import (
Expand Down
31 changes: 29 additions & 2 deletions internal/generate/awsclient/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"cmp"
_ "embed"
"slices"
"strings"

"github.com/hashicorp/terraform-provider-aws/internal/generate/common"
"github.com/hashicorp/terraform-provider-aws/names/data"
Expand All @@ -20,7 +21,8 @@ type ServiceDatum struct {
}

type TemplateData struct {
Services []ServiceDatum
BuildTags string
Services []ServiceDatum
}

func main() {
Expand All @@ -36,7 +38,13 @@ func main() {
g.Fatalf("error reading service data: %s", err)
}

td := TemplateData{}
td := TemplateData{
BuildTags: "!core",
}

coreTd := TemplateData{
BuildTags: "core",
}

for _, l := range data {
if l.Exclude() {
Expand All @@ -57,6 +65,10 @@ func main() {
}

td.Services = append(td.Services, s)

if common.IsCoreService(l.ProviderPackage()) {
coreTd.Services = append(coreTd.Services, s)
}
}

slices.SortStableFunc(td.Services, func(a, b ServiceDatum) int {
Expand All @@ -72,6 +84,21 @@ func main() {
if err := d.Write(); err != nil {
g.Fatalf("generating file (%s): %s", filename, err)
}

slices.SortStableFunc(coreTd.Services, func(a, b ServiceDatum) int {
return cmp.Compare(a.ProviderNameUpper, b.ProviderNameUpper)
})

coreFilename := strings.ReplaceAll(filename, `_gen`, `_core_gen`)
coreD := g.NewGoFileDestination(coreFilename)

if err := coreD.BufferTemplate("awsclient", tmpl, coreTd); err != nil {
g.Fatalf("generating file (%s): %s", coreFilename, err)
}

if err := coreD.Write(); err != nil {
g.Fatalf("generating file (%s): %s", coreFilename, err)
}
}

//go:embed file.gtpl
Expand Down
37 changes: 37 additions & 0 deletions internal/generate/common/core_services.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: MPL-2.0

package common

import "slices"

// coreServices is the list of AWS services included when the provider is built
// with the 'core' tag
//
// It includes primary services and their explicitly required dependencies.
var coreServices = []string{
"account",
"cloudwatch",
"dynamodb",
"ec2",
"ecs",
"eks",
"elasticache",
"iam",
"kms",
"lambda",
"logs",
"organizations",
"rds",
"s3",
"s3control",
"sns",
"sqs",
"sts",
}

// IsCoreService returns true if the given service package name is considered a
// core service
func IsCoreService(name string) bool {
return slices.Contains(coreServices, name)
}
2 changes: 2 additions & 0 deletions internal/generate/servicepackages/file.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

// Code generated by internal/generate/servicepackages/main.go; DO NOT EDIT.

//go:build {{ .BuildTags }}

package {{ .PackageName }}

import (
Expand Down
27 changes: 27 additions & 0 deletions internal/generate/servicepackages/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"fmt"
"os"
"slices"
"strings"

"github.com/hashicorp/terraform-provider-aws/internal/generate/common"
"github.com/hashicorp/terraform-provider-aws/names/data"
Expand Down Expand Up @@ -44,6 +45,12 @@ func main() {

td := TemplateData{
PackageName: packageName,
BuildTags: "!core",
}

coreTd := TemplateData{
PackageName: packageName,
BuildTags: "core",
}

for _, l := range data {
Expand All @@ -61,6 +68,10 @@ func main() {
}

td.Services = append(td.Services, s)

if common.IsCoreService(p) {
coreTd.Services = append(coreTd.Services, s)
}
}

slices.SortStableFunc(td.Services, func(a, b ServiceDatum) int {
Expand All @@ -76,6 +87,21 @@ func main() {
if err := d.Write(); err != nil {
g.Fatalf("generating file (%s): %s", filename, err)
}

slices.SortStableFunc(coreTd.Services, func(a, b ServiceDatum) int {
return cmp.Compare(a.ProviderPackage, b.ProviderPackage)
})

coreFilename := strings.ReplaceAll(filename, `_gen`, `_core_gen`)
coreD := g.NewGoFileDestination(coreFilename)

if err := coreD.BufferTemplate("servicepackages", tmpl, coreTd); err != nil {
g.Fatalf("error generating core service packages list: %s", err)
}

if err := coreD.Write(); err != nil {
g.Fatalf("generating file (%s): %s", coreFilename, err)
}
}

type ServiceDatum struct {
Expand All @@ -84,6 +110,7 @@ type ServiceDatum struct {

type TemplateData struct {
PackageName string
BuildTags string
Services []ServiceDatum
}

Expand Down
58 changes: 58 additions & 0 deletions internal/provider/sdkv2/service_packages_core_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions internal/provider/sdkv2/service_packages_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading