diff options
Diffstat (limited to 'golang/cmd/fatcatd')
| -rw-r--r-- | golang/cmd/fatcatd/main.go | 55 | 
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) +	} + +} | 
