// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 //go:build ignore // +build ignore package main import ( "bytes" "fmt" "io/ioutil" "log" "os" "os/exec" ) func main() { err := generate() if err != nil { log.Fatal(err) } } func generate() error { outfn := "generated_config.go" tmpfile, err := ioutil.TempFile(".", "."+outfn+".") if err != nil { return err } defer os.Remove(tmpfile.Name()) gofmt := exec.Command("gofmt", "-s") gofmt.Stdout = tmpfile gofmt.Stderr = os.Stderr w, err := gofmt.StdinPipe() if err != nil { return err } gofmt.Start() // copyright header: same as this file cmd := exec.Command("head", "-n", "4", "generate.go") cmd.Stdout = w cmd.Stderr = os.Stderr err = cmd.Run() if err != nil { return err } data, err := ioutil.ReadFile("config.default.yml") if err != nil { return err } _, err = fmt.Fprintf(w, "package config\nvar DefaultYAML = []byte(`%s`)", bytes.Replace(data, []byte{'`'}, []byte("`+\"`\"+`"), -1)) if err != nil { return err } err = w.Close() if err != nil { return err } err = gofmt.Wait() if err != nil { return err } err = tmpfile.Close() if err != nil { return err } return os.Rename(tmpfile.Name(), outfn) }