From 6fceb914a9479b7a6c19a0f54971b3bd580146df Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Wed, 9 May 2018 19:00:43 -0700 Subject: binary called fatcatd --- golang/cmd/fatcatd/main.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 golang/cmd/fatcatd/main.go (limited to 'golang/cmd/fatcatd') diff --git a/golang/cmd/fatcatd/main.go b/golang/cmd/fatcatd/main.go new file mode 100644 index 00000000..94455bf8 --- /dev/null +++ b/golang/cmd/fatcatd/main.go @@ -0,0 +1,55 @@ + +package main + +import ( + "log" + "os" + + loads "github.com/go-openapi/loads" + flags "github.com/jessevdk/go-flags" + + "git.archive.org/bnewbold/fatcat/golang/restapi" + "git.archive.org/bnewbold/fatcat/golang/restapi/operations" +) + +func main() { + + // load embedded swagger file + swaggerSpec, err := loads.Analyzed(restapi.SwaggerJSON, "") + if err != nil { + log.Fatalln(err) + } + + // create new service API + api := operations.NewFatcatAPI(swaggerSpec) + server := restapi.NewServer(api) + defer server.Shutdown() + + parser := flags.NewParser(server, flags.Default) + parser.ShortDescription = "fatcat" + parser.LongDescription = "A scalable, versioned, API-oriented catalog of bibliographic entities and file metadata" + server.ConfigureFlags() + for _, optsGroup := range api.CommandLineOptionsGroups { + _, err := parser.AddGroup(optsGroup.ShortDescription, optsGroup.LongDescription, optsGroup.Options) + if err != nil { + log.Fatalln(err) + } + } + + if _, err := parser.Parse(); err != nil { + code := 1 + if fe, ok := err.(*flags.Error); ok { + if fe.Type == flags.ErrHelp { + code = 0 + } + } + os.Exit(code) + } + + server.ConfigureAPI() + + if err := server.Serve(); err != nil { + log.Fatalln(err) + } + +} -- cgit v1.2.3