| // +build ignore |
| |
| package main |
| |
| /* |
| Generate asset_versions_gen.go. |
| */ |
| |
| import ( |
| "context" |
| "fmt" |
| "io/ioutil" |
| "os" |
| "path" |
| "runtime" |
| "sort" |
| "strings" |
| |
| "go.skia.org/infra/go/exec" |
| "go.skia.org/infra/go/sklog" |
| ) |
| |
| const ( |
| TARGET_FILE = "asset_versions_gen.go" |
| TMPL = `// Code generated by "go run gen_versions.go"; DO NOT EDIT |
| |
| package cipd |
| |
| var PKG_VERSIONS_FROM_ASSETS = map[string]string{ |
| %s} |
| ` |
| ) |
| |
| func main() { |
| _, filename, _, _ := runtime.Caller(0) |
| pkgDir := path.Dir(filename) |
| rootDir := path.Join(pkgDir, "..", "..") |
| |
| // List the assets. |
| assetsDir := path.Join(rootDir, "infra", "bots", "assets") |
| entries, err := ioutil.ReadDir(assetsDir) |
| if err != nil { |
| sklog.Fatal(err) |
| } |
| assets := make(map[string]string, len(entries)) |
| for _, e := range entries { |
| if e.IsDir() { |
| contents, err := ioutil.ReadFile(path.Join(assetsDir, e.Name(), "VERSION")) |
| if err == nil { |
| assets[e.Name()] = strings.TrimSpace(string(contents)) |
| } else if !os.IsNotExist(err) { |
| sklog.Fatal(err) |
| } |
| } |
| } |
| |
| assetLines := make([]string, 0, len(assets)) |
| for name, version := range assets { |
| line := fmt.Sprintf("\t\"%s\": \"%s\",\n", name, version) |
| assetLines = append(assetLines, line) |
| } |
| sort.Strings(assetLines) |
| assetsStr := strings.Join(assetLines, "") |
| fileContents := []byte(fmt.Sprintf(TMPL, assetsStr)) |
| targetFile := path.Join(pkgDir, TARGET_FILE) |
| if err := ioutil.WriteFile(targetFile, fileContents, os.ModePerm); err != nil { |
| sklog.Fatal(err) |
| } |
| if _, err := exec.RunCwd(context.Background(), ".", "gofmt", "-s", "-w", targetFile); err != nil { |
| sklog.Fatal(err) |
| } |
| } |