in tools/teamcity-generator/main.go [20:81]
func main() {
var version string
var outputPath string
flag.Parse()
outputPath = *oPath
version = *ver
if outputPath == "" {
log.Fatalf("missing output flag: provide `--output <path>` to set the path to output generated files to")
}
if version == "" {
log.Fatalf("missing version flag: provide `--version <ga|beta>` to set the path to output generated files to")
}
if version != GA_VERSION && version != BETA_VERSION {
log.Fatalf("invalid version flag value: value must be `%s` or `%s`", GA_VERSION, BETA_VERSION)
}
var terraformResourceDirectory string
switch version {
case GA_VERSION:
terraformResourceDirectory = "google"
case BETA_VERSION:
terraformResourceDirectory = "google-beta"
default:
log.Fatalf("invalid version flag value: value must be `%s` or `%s`", GA_VERSION, BETA_VERSION)
}
log.Printf("Generating TeamCity configuration service package map for `%s` provider", terraformResourceDirectory)
// Get a list of the service packages found in a given directory
servicesDir := fmt.Sprintf("%s/%s/services", outputPath, terraformResourceDirectory)
serviceList, err := readAllServicePackages(servicesDir)
if err != nil {
log.Fatalf("error determining service package list: %s", err)
}
// Create a string of the map that should be created in .teamcity/components/generated/services.kt
relativeServicesDir := fmt.Sprintf("./%s/services", terraformResourceDirectory)
serviceMap, err := createMap(serviceList, relativeServicesDir)
if err != nil {
log.Fatalf("error creating service package map: %s", err)
}
// Ensure .teamcity/components/generated/services.kt exists, create if not present
// "Create creates or truncates the named file. If the file already exists, it is truncated."
servicesKtFilePath := fmt.Sprintf("%s/.teamcity/components/generated/services.kt", outputPath)
log.Printf("Opening %s", servicesKtFilePath)
f, err := os.Create(servicesKtFilePath)
if err != nil {
log.Fatalf("error creating or truncating existing file `.teamcity/components/generated/services.kt` in output directory: %s", err)
}
defer f.Close()
// Save map to .teamcity/components/generated/services.kt
log.Printf("Saving service map to %s", servicesKtFilePath)
_, err = f.Write([]byte(serviceMap))
if err != nil {
log.Fatalf("error writing to file `.teamcity/components/generated/services.kt` in output directory: %s", err)
}
log.Println("Finished")
}