main.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // +build codegen
  2. // Command gen-endpoints parses a JSON description of the AWS endpoint
  3. // discovery logic and generates a Go file which returns an endpoint.
  4. //
  5. // aws-gen-goendpoints apis/_endpoints.json aws/endpoints_map.go
  6. package main
  7. import (
  8. "flag"
  9. "fmt"
  10. "os"
  11. "github.com/aws/aws-sdk-go/aws/endpoints"
  12. )
  13. // Generates the endpoints from json description
  14. //
  15. // Args:
  16. // -model The definition file to use
  17. // -out The output file to generate
  18. func main() {
  19. var modelName, outName string
  20. flag.StringVar(&modelName, "model", "", "Endpoints definition model")
  21. flag.StringVar(&outName, "out", "", "File to write generated endpoints to.")
  22. flag.Parse()
  23. if len(modelName) == 0 || len(outName) == 0 {
  24. exitErrorf("model and out both required.")
  25. }
  26. modelFile, err := os.Open(modelName)
  27. if err != nil {
  28. exitErrorf("failed to open model definition, %v.", err)
  29. }
  30. defer modelFile.Close()
  31. outFile, err := os.Create(outName)
  32. if err != nil {
  33. exitErrorf("failed to open out file, %v.", err)
  34. }
  35. defer func() {
  36. if err := outFile.Close(); err != nil {
  37. exitErrorf("failed to successfully write %q file, %v", outName, err)
  38. }
  39. }()
  40. if err := endpoints.CodeGenModel(modelFile, outFile); err != nil {
  41. exitErrorf("failed to codegen model, %v", err)
  42. }
  43. }
  44. func exitErrorf(msg string, args ...interface{}) {
  45. fmt.Fprintf(os.Stderr, msg+"\n", args...)
  46. os.Exit(1)
  47. }