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  }