aboutsummaryrefslogtreecommitdiffstats
path: root/golang/cmd/fatcatd/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'golang/cmd/fatcatd/main.go')
-rw-r--r--golang/cmd/fatcatd/main.go55
1 files changed, 55 insertions, 0 deletions
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)
+ }
+
+}