Skip to content
This repository has been archived by the owner on Jul 27, 2021. It is now read-only.

Commit

Permalink
Refactor regen.go
Browse files Browse the repository at this point in the history
  • Loading branch information
imjasonh committed Jan 11, 2018
1 parent 175f5fe commit 2301d89
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions regen.go
Expand Up @@ -32,6 +32,20 @@ func main() {
exitf("Must provide -tok")
}

of, err := os.Create(*outFile)
if err != nil {
exitf("os.Open(%s): %v", *outFile, err)
}
defer of.Close()

if err := tmpl.Execute(io.MultiWriter(os.Stdout, of), addresses()); err != nil {
exitf("tmpl.Execute: %v", err)
}
}

type address struct{ Region, IP string }

func addresses() []address {
// Get instances and IPs.
url := fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/aggregated/addresses", *project)
req, err := http.NewRequest("GET", url, nil)
Expand All @@ -55,22 +69,14 @@ func main() {
exitf("json.Decode: %v", err)
}

type region struct{ Region, IP string }
var regions []region
var addresses []address
for reg, addrs := range response.Items {
reg = strings.TrimPrefix(reg, "regions/")
regions = append(regions, region{reg, addrs.Addresses[0].Address})
addresses = append(addresses, address{reg, addrs.Addresses[0].Address})
}
sort.Slice(regions, func(i, j int) bool { return regions[i].Region < regions[j].Region })
sort.Slice(addresses, func(i, j int) bool { return addresses[i].Region < addresses[j].Region })
return addresses

of, err := os.Create(*outFile)
if err != nil {
exitf("os.Open(%s): %v", *outFile, err)
}
defer of.Close()
if err := tmpl.Execute(io.MultiWriter(os.Stdout, of), regions); err != nil {
exitf("tmpl.Execute: %v", err)
}
}

func exitf(f string, args ...interface{}) {
Expand Down

0 comments on commit 2301d89

Please sign in to comment.