func main()

in tools/dockerversioning/scripts/dockerfiles/main.go [236:274]


func main() {
	defaultTemplateDirPtr := flag.String("template_dir", "templates", "Path to directory containing Dockerfile.template and any other files to copy over")
	verifyPtr := flag.Bool("verify_only", false, "Verify dockerfiles")
	createDirPtr := flag.Bool("create_directories", false, "Create new directories")
	failureCount := 0
	flag.Parse()

	var spec versions.Spec
	spec = versions.LoadVersions("versions.yaml")

	for _, version := range spec.Versions {
		// Ignore version without Dir for possibility to use builder images
		if version.Dir == "" {
			continue
		}
		// templatePath - path to Dockerfile.template
		templatePath := filepath.Join(*defaultTemplateDirPtr, version.TemplateSubDir, "Dockerfile.template")
		templateData, err := ioutil.ReadFile(templatePath)
		templateString := string(templateData)
		check(err)

		tmpl, err := template.
			New("dockerfileTemplate").
			Funcs(template.FuncMap{"KeyServersRetryLoop": funcKeyServersRetryLoop}).
			Parse(templateString)
		check(err)

		if *verifyPtr {
			failureCount += verifyDockerfiles(version, filepath.Join(*defaultTemplateDirPtr, version.TemplateSubDir), *tmpl)
			failureCount += verifyCopiedFiles(version, filepath.Join(*defaultTemplateDirPtr, version.TemplateSubDir))
		} else {
			data := renderDockerfile(version, *tmpl)
			writeDockerfile(version, data, *createDirPtr)
			// if version.TemplateSubDir is empty then we default to 'templates' folder
			copyFiles(version, filepath.Join(*defaultTemplateDirPtr, version.TemplateSubDir), *createDirPtr)
		}
	}
	os.Exit(failureCount)
}