github.com/percona-lab/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 }