in scripts/gendockerfile.go [74:128]
func main() {
flag.Parse()
// Locate all go.mod files.
var moduleDirs []string
if err := filepath.Walk(*baseFlag, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
if info.Name() == "go.mod" {
moduleDirs = append(moduleDirs, relPath(filepath.Dir(path)))
}
return nil
}
name := info.Name()
if name != *baseFlag && (name == "vendor" || name == "tools" || strings.HasPrefix(name, ".")) {
return filepath.SkipDir
}
return nil
}); err != nil {
log.Fatal(err)
}
sort.Strings(moduleDirs)
var buf bytes.Buffer
var out io.Writer = &buf
outFile := filepath.Join(*baseFlag, "scripts", *outFlag)
if !*diffFlag {
f, err := os.Create(outFile)
if err != nil {
log.Fatal(err)
}
defer f.Close()
out = f
}
var data struct {
Dirs []string
}
data.Dirs = moduleDirs
if err := dockerfileTemplate.Execute(out, &data); err != nil {
log.Fatal(err)
}
if *diffFlag {
cmd := exec.Command("diff", "-c", outFile, "-")
cmd.Stdin = &buf
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}
}