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