github.com/kaisawind/go-swagger@v0.19.0/generator/templates/server/main.gotmpl (about)

     1  // Code generated by go-swagger; DO NOT EDIT.
     2  
     3  
     4   {{ if .Copyright -}}// {{ comment .Copyright -}}{{ end }}
     5  
     6  
     7  package main
     8  
     9  import (
    10    "log"
    11    "os"
    12    "net/http"
    13  
    14    loads "github.com/go-openapi/loads"
    15  	{{ if .UseGoStructFlags }}flags "github.com/jessevdk/go-flags"
    16    {{ end -}}
    17    {{ if .UsePFlags }}flag "github.com/spf13/pflag"
    18    {{ end -}}
    19  
    20  
    21    {{range .DefaultImports}}{{printf "%q" .}}
    22    {{end}}
    23    {{range $key, $value := .Imports}}{{$key}} {{ printf "%q" $value}}
    24    {{end}}
    25  )
    26  
    27  // This file was generated by the swagger tool.
    28  // Make sure not to overwrite this file after you generated it because all your edits would be lost!
    29  {{ if .ExcludeSpec }}
    30  func init() {
    31    loads.AddLoader(fmts.YAMLMatcher, fmts.YAMLDoc)
    32  }
    33  {{ end }}
    34  
    35  func main() {
    36    {{ if .UsePFlags }}{{ if not .ExcludeSpec }}
    37    swaggerSpec, err := loads.Embedded({{ .APIPackage }}.SwaggerJSON, {{ .APIPackage }}.FlatSwaggerJSON)
    38    if err != nil {
    39      log.Fatalln(err)
    40    }
    41    {{ end }}
    42    var server *{{ .APIPackage }}.Server // make sure init is called
    43  
    44  	flag.Usage = func() {
    45      fmt.Fprint(os.Stderr, "Usage:\n")
    46  		fmt.Fprint(os.Stderr, "  {{ dasherize .Name }}-server [OPTIONS]\n\n")
    47  
    48      title := {{ if .Info }}{{ if .Info.Title }}{{ printf "%q" .Info.Title }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Title{{ end }}{{ end }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Title{{ end }}{{ end}}
    49  		fmt.Fprint(os.Stderr, title+"\n\n")
    50  		desc := {{ if .Info }}{{ if .Info.Description }}{{ printf "%q" .Info.Description }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Description{{ end }}{{ end }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Description{{ end }}{{ end}}
    51      if desc != "" {
    52  			fmt.Fprintf(os.Stderr, desc+"\n\n")
    53  		}
    54  		fmt.Fprintln(os.Stderr, flag.CommandLine.FlagUsages())
    55  	}
    56  	// parse the CLI flags
    57  	flag.Parse()
    58  
    59    {{ if .ExcludeSpec }}
    60    server = {{ .APIPackage }}.NewServer(nil)
    61    swaggerSpec, err := loads.Spec(string(server.Spec))
    62    if err != nil {
    63      log.Fatalln(err)
    64    }
    65    api := {{.Package}}.New{{ pascalize .Name }}API(swaggerSpec)
    66    server.SetAPI(api)
    67    {{ else }}
    68   	api :={{.Package}}.New{{ pascalize .Name }}API(swaggerSpec)
    69  	// get server with flag values filled out
    70  	server = {{ .APIPackage }}.NewServer(api)
    71    {{ end }}
    72  	defer server.Shutdown()
    73  
    74  	server.ConfigureAPI()
    75  	if err := server.Serve(); err != nil {
    76  		log.Fatalln(err)
    77  	}
    78    {{ else }}{{ if .ExcludeSpec }}
    79    server := {{ .APIPackage }}.NewServer(nil){{ else }}
    80    swaggerSpec, err := loads.Embedded({{ .APIPackage }}.SwaggerJSON, {{ .APIPackage }}.FlatSwaggerJSON)
    81    if err != nil {
    82      log.Fatalln(err)
    83    }
    84  
    85    api := {{.Package}}.New{{ pascalize .Name }}API(swaggerSpec)
    86  	server := {{ .APIPackage }}.NewServer(api)
    87    defer server.Shutdown(){{ end }}
    88  
    89    parser := flags.NewParser(server, flags.Default)
    90    parser.ShortDescription = {{ if .Info }}{{ if .Info.Title }}{{ printf "%q" .Info.Title }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Title{{ end }}{{ end }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Title{{ end }}{{ end}}
    91    parser.LongDescription = {{ if .Info }}{{ if .Info.Description }}{{ printf "%q" .Info.Description }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Description{{ end }}{{ end }}{{ else }}{{ if .ExcludeSpec }}""{{ else }}swaggerSpec.Spec().Info.Description{{ end }}{{ end}}
    92  
    93    {{ if not .ExcludeSpec }}
    94    server.ConfigureFlags()
    95    for _, optsGroup := range api.CommandLineOptionsGroups {
    96      _, err := parser.AddGroup(optsGroup.ShortDescription, optsGroup.LongDescription, optsGroup.Options)
    97      if err != nil {
    98        log.Fatalln(err)
    99      }
   100    }
   101    {{ end }}
   102  	if _, err := parser.Parse(); err != nil {
   103  		code := 1
   104  		if fe, ok := err.(*flags.Error); ok {
   105  			if fe.Type == flags.ErrHelp {
   106  				code = 0
   107  			}
   108  		}
   109  		os.Exit(code)
   110  	}
   111    {{ if .ExcludeSpec }}
   112    swaggerSpec, err := loads.Spec(string(server.Spec))
   113    if err != nil {
   114      log.Fatalln(err)
   115    }
   116  
   117    api := {{.Package}}.New{{ pascalize .Name }}API(swaggerSpec)
   118    server.SetAPI(api)
   119    defer server.Shutdown()
   120    {{ end }}
   121  
   122    server.ConfigureAPI()
   123  
   124    if err := server.Serve(); err != nil {
   125      log.Fatalln(err)
   126    }
   127    {{ end }}
   128  }