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  }