diff --git a/Makefile b/Makefile index 5d37121..8985019 100644 --- a/Makefile +++ b/Makefile @@ -5,3 +5,6 @@ test: fmt: @go fmt ./... + +generate: + @go generate ./... diff --git a/data.go b/data.go index 59031d0..04da3c5 100644 --- a/data.go +++ b/data.go @@ -1,3 +1,5 @@ +// Code generated by tools/generator/generate.go; DO NOT EDIT. + package regions var REGION_DATA = map[string]Region{ diff --git a/go.mod b/go.mod index b27f256..f16be71 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/ohkinozomu/gcp-regions go 1.17 + +require github.com/sanity-io/litter v1.5.2 // indirect diff --git a/go.sum b/go.sum index e69de29..e6ff270 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,5 @@ +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sanity-io/litter v1.5.2 h1:AnC8s9BMORWH5a4atZ4D6FPVvKGzHcnc5/IVTa87myw= +github.com/sanity-io/litter v1.5.2/go.mod h1:5Z71SvaYy5kcGtyglXOC9rrUi3c1E8CamFWjQsazTh0= +github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/regions.go b/regions.go index 39b8edf..1f37a58 100644 --- a/regions.go +++ b/regions.go @@ -1,3 +1,6 @@ +//go:generate go run tools/generator/generate.go +//go:generate gofmt -w data.go + package regions func IsValid(name string) bool { diff --git a/tools/generator/generate.go b/tools/generator/generate.go index ee864aa..dd082e5 100644 --- a/tools/generator/generate.go +++ b/tools/generator/generate.go @@ -3,10 +3,12 @@ package main import ( + "bytes" "encoding/json" - "fmt" "io/ioutil" + "log" "net/http" + "os" "strings" "github.com/sanity-io/litter" @@ -19,23 +21,44 @@ type Region struct { Longitude float64 `json:"longitude"` } -func main() { +func generate() (string, error) { regionsJsonURL := "https://raw.githubusercontent.com/GoogleCloudPlatform/region-picker/main/data/regions.json" resp, err := http.Get(regionsJsonURL) if err != nil { - panic(err) + return "", err } defer resp.Body.Close() regionData, err := ioutil.ReadAll(resp.Body) if err != nil { - panic(err) + return "", err } var m map[string]Region if err := json.Unmarshal(regionData, &m); err != nil { - panic(err) + return "", err } - fmt.Println(strings.Replace(litter.Sdump(m), "main.Region", "Region", -1)) + return strings.Replace(litter.Sdump(m), "main.Region", "Region", -1), err +} + +func main() { + var out bytes.Buffer + out.Reset() + out.WriteString(`// Code generated by tools/generator/generate.go; DO NOT EDIT. + +package regions + +var REGION_DATA = `) + + generated, err := generate() + if err != nil { + log.Fatal(err) + } + out.WriteString(generated) + + const target = "data.go" + if err := os.WriteFile(target, out.Bytes(), 0644); err != nil { + log.Fatal(err) + } } diff --git a/tools/generator/go.mod b/tools/generator/go.mod deleted file mode 100644 index 5697281..0000000 --- a/tools/generator/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/ohkinozomu/gcp-regions/tools/generator - -go 1.17 - -require github.com/sanity-io/litter v1.5.2 // indirect diff --git a/tools/generator/go.sum b/tools/generator/go.sum deleted file mode 100644 index e6ff270..0000000 --- a/tools/generator/go.sum +++ /dev/null @@ -1,5 +0,0 @@ -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sanity-io/litter v1.5.2 h1:AnC8s9BMORWH5a4atZ4D6FPVvKGzHcnc5/IVTa87myw= -github.com/sanity-io/litter v1.5.2/go.mod h1:5Z71SvaYy5kcGtyglXOC9rrUi3c1E8CamFWjQsazTh0= -github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=