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