func main()

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))
	}
}