in tpgtools/main.go [49:131]
func main() {
resources, products, err := loadAndModelResources()
if err != nil {
glog.Exitf("Error loading resources: %w", err)
}
if mode != nil && *mode == "serialization" {
if vFilter != nil {
glog.Warning("[WARNING] serialization mode uses all resource versions. version flag is ignored")
}
generateSerializationLogic(resources)
return
}
var resourcesForVersion []*Resource
var productsForVersion []*ProductMetadata
var version *Version
if vFilter != nil && *vFilter != "" {
version = fromString(*vFilter)
if version == nil {
glog.Exitf("Failed finding version for input: %s", *vFilter)
}
resourcesForVersion = resources[*version]
productsForVersion = products[*version]
} else {
resourcesForVersion = resources[allVersions()[0]]
productsForVersion = products[allVersions()[0]]
}
if *version == GA_VERSION {
terraformResourceDirectory = "google"
terraformProviderModule = "github.com/hashicorp/terraform-provider-google/google"
} else if *version == ALPHA_VERSION {
terraformResourceDirectory = "google-private"
terraformProviderModule = "internal/terraform-next"
}
generatedResources := make([]*Resource, 0, len(resourcesForVersion))
for _, resource := range resourcesForVersion {
if skipResource(resource) {
continue
}
glog.Infof("Generating from resource %s", resource.TitleCaseFullName())
generateResourceFile(resource)
generateSweeperFile(resource)
generateResourceTestFile(resource)
generatedResources = append(generatedResources, resource)
}
generateProviderResourcesFile(generatedResources)
// GA website files are always generated for the beta version.
websiteVersion := *version
if *version == GA_VERSION {
websiteVersion = BETA_VERSION
}
for _, resource := range resources[websiteVersion] {
if skipResource(resource) {
continue
}
generateResourceWebsiteFile(resource, resources, version)
}
// product specific generation
generateProductsFile("provider_dcl_endpoints", productsForVersion)
generateProductsFile("provider_dcl_client_creation", productsForVersion)
if oPath == nil || *oPath == "" {
glog.Info("Skipping copying handwritten files, no output specified")
return
}
if cPath == nil || *cPath == "" {
glog.Info("No handwritten path specified")
return
}
// Copy DCL helper files into the folder tpgdclresource to make it easier to remove these files later.
dirPath := path.Join(*oPath, terraformResourceDirectory, "tpgdclresource")
if err := os.MkdirAll(dirPath, os.ModePerm); err != nil {
glog.Error(fmt.Errorf("error creating Terraform tpgdclresource directory %v: %v", dirPath, err))
}
}