defaults.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //go:generate go run defaults.go default.json defs.go
  2. package main //build !none
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "os"
  8. "os/exec"
  9. "path/filepath"
  10. "strings"
  11. )
  12. func fatal(str string, v ...interface{}) {
  13. fmt.Fprintf(os.Stderr, str, v...)
  14. os.Exit(1)
  15. }
  16. type setting struct {
  17. Value int64 `json:"v"`
  18. Comment string `json:"d"`
  19. }
  20. func main() {
  21. if len(os.Args) < 3 {
  22. fatal("usage %s <input> <output>\n", os.Args[0])
  23. }
  24. content, err := ioutil.ReadFile(os.Args[1])
  25. if err != nil {
  26. fatal("error reading file %v\n", err)
  27. }
  28. m := make(map[string]setting)
  29. json.Unmarshal(content, &m)
  30. filepath := filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "params", os.Args[2])
  31. output, err := os.OpenFile(filepath, os.O_RDWR|os.O_CREATE, os.ModePerm /*0777*/)
  32. if err != nil {
  33. fatal("error opening file for writing %v\n", err)
  34. }
  35. output.WriteString(`// DO NOT EDIT!!!
  36. // AUTOGENERATED FROM generators/defaults.go
  37. package params
  38. import "math/big"
  39. var (
  40. `)
  41. for name, setting := range m {
  42. output.WriteString(fmt.Sprintf("%s=big.NewInt(%d) // %s\n", strings.Title(name), setting.Value, setting.Comment))
  43. }
  44. output.WriteString(")\n")
  45. output.Close()
  46. cmd := exec.Command("gofmt", "-w", filepath)
  47. if err := cmd.Run(); err != nil {
  48. fatal("gofmt failed: %v\n", err)
  49. }
  50. }