github.com/thetreep/go-swagger@v0.0.0-20240223100711-35af64f14f01/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 "fmt" 11 "log" 12 "net/http" 13 "os" 14 15 "github.com/go-openapi/loads" 16 {{- if .UseGoStructFlags }} 17 flags "github.com/jessevdk/go-flags" 18 {{- end }} 19 {{- if .UsePFlags }} 20 flag "github.com/spf13/pflag" 21 {{- end }} 22 {{- if .UseFlags }} 23 "flag" 24 {{- end }} 25 26 {{ imports .DefaultImports }} 27 {{ imports .Imports }} 28 ) 29 30 // This file was generated by the swagger tool. 31 // Make sure not to overwrite this file after you generated it because all your edits would be lost! 32 {{ if .ExcludeSpec }} 33 func init() { 34 loads.AddLoader(fmts.YAMLMatcher, fmts.YAMLDoc) 35 } 36 {{ end }} 37 38 func main() { 39 {{ if .UsePFlags }} 40 {{- if not .ExcludeSpec }} 41 swaggerSpec, err := loads.Embedded({{ .ServerPackageAlias }}.SwaggerJSON, {{ .ServerPackageAlias }}.FlatSwaggerJSON) 42 if err != nil { 43 log.Fatalln(err) 44 } 45 {{- end }} 46 47 var server *{{ .ServerPackageAlias }}.Server // make sure init is called 48 49 flag.Usage = func() { 50 fmt.Fprint(os.Stderr, "Usage:\n") 51 fmt.Fprint(os.Stderr, " {{ dasherize .Name }}-server [OPTIONS]\n\n") 52 53 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}} 54 fmt.Fprint(os.Stderr, title+"\n\n") 55 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}} 56 if desc != "" { 57 fmt.Fprintf(os.Stderr, desc+"\n\n") 58 } 59 fmt.Fprintln(os.Stderr, flag.CommandLine.FlagUsages()) 60 } 61 // parse the CLI flags 62 flag.Parse() 63 {{- if .ExcludeSpec }} 64 65 server = {{ .ServerPackageAlias }}.NewServer(nil) 66 swaggerSpec, err := loads.Spec(string(server.Spec)) 67 if err != nil { 68 log.Fatalln(err) 69 } 70 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 71 server.SetAPI(api) 72 {{- else }} 73 74 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 75 // get server with flag values filled out 76 server = {{ .ServerPackageAlias }}.NewServer(api) 77 {{- end }} 78 defer server.Shutdown() 79 80 server.ConfigureAPI() 81 if err := server.Serve(); err != nil { 82 log.Fatalln(err) 83 } 84 {{ end }} 85 {{ if .UseGoStructFlags}} 86 {{- if .ExcludeSpec }} 87 server := {{ .ServerPackageAlias }}.NewServer(nil) 88 {{- else }} 89 swaggerSpec, err := loads.Embedded({{ .ServerPackageAlias }}.SwaggerJSON, {{ .ServerPackageAlias }}.FlatSwaggerJSON) 90 if err != nil { 91 log.Fatalln(err) 92 } 93 94 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 95 server := {{ .ServerPackageAlias }}.NewServer(api) 96 defer server.Shutdown() 97 {{- end }} 98 99 parser := flags.NewParser(server, flags.Default) 100 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}} 101 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}} 102 103 {{- if not .ExcludeSpec }} 104 server.ConfigureFlags() 105 for _, optsGroup := range api.CommandLineOptionsGroups { 106 _, err := parser.AddGroup(optsGroup.ShortDescription, optsGroup.LongDescription, optsGroup.Options) 107 if err != nil { 108 log.Fatalln(err) 109 } 110 } 111 {{- end }} 112 113 if _, err := parser.Parse(); err != nil { 114 code := 1 115 if fe, ok := err.(*flags.Error); ok { 116 if fe.Type == flags.ErrHelp { 117 code = 0 118 } 119 } 120 os.Exit(code) 121 } 122 {{- if .ExcludeSpec }} 123 swaggerSpec, err := loads.Spec(string(server.Spec)) 124 if err != nil { 125 log.Fatalln(err) 126 } 127 128 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 129 server.SetAPI(api) 130 defer server.Shutdown() 131 {{- end }} 132 133 server.ConfigureAPI() 134 135 if err := server.Serve(); err != nil { 136 log.Fatalln(err) 137 } 138 {{ end }} 139 {{ if .UseFlags}} 140 {{- if not .ExcludeSpec }} 141 142 swaggerSpec, err := loads.Embedded({{ .ServerPackageAlias }}.SwaggerJSON, {{ .ServerPackageAlias }}.FlatSwaggerJSON) 143 if err != nil { 144 log.Fatalln(err) 145 } 146 {{- end }} 147 var server *{{ .ServerPackageAlias }}.Server // make sure init is called 148 149 flag.Usage = func() { 150 fmt.Fprint(os.Stderr, "Usage:\n") 151 fmt.Fprint(os.Stderr, " {{ dasherize .Name }}-server [OPTIONS]\n\n") 152 153 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}} 154 fmt.Fprint(os.Stderr, title+"\n\n") 155 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}} 156 if desc != "" { 157 fmt.Fprintf(os.Stderr, desc+"\n\n") 158 } 159 flag.CommandLine.SetOutput(os.Stderr) 160 flag.PrintDefaults() 161 } 162 // parse the CLI flags 163 flag.Parse() 164 165 {{- if .ExcludeSpec }} 166 167 server = {{ .ServerPackageAlias }}.NewServer(nil) 168 swaggerSpec, err := loads.Spec(string(server.Spec)) 169 if err != nil { 170 log.Fatalln(err) 171 } 172 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 173 server.SetAPI(api) 174 {{- else }} 175 api := {{.APIPackageAlias}}.New{{ pascalize .Name }}API(swaggerSpec) 176 // get server with flag values filled out 177 server = {{ .ServerPackageAlias }}.NewServer(api) 178 {{- end }} 179 defer server.Shutdown() 180 181 server.ConfigureAPI() 182 if err := server.Serve(); err != nil { 183 log.Fatalln(err) 184 } 185 {{ end }} 186 }