summaryrefslogtreecommitdiffstats
path: root/golang/cmd/fatcatd/root.go
diff options
context:
space:
mode:
Diffstat (limited to 'golang/cmd/fatcatd/root.go')
-rw-r--r--golang/cmd/fatcatd/root.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/golang/cmd/fatcatd/root.go b/golang/cmd/fatcatd/root.go
new file mode 100644
index 00000000..8c1bc586
--- /dev/null
+++ b/golang/cmd/fatcatd/root.go
@@ -0,0 +1,65 @@
+
+package main
+
+import (
+ "os"
+ "fmt"
+
+ log "github.com/sirupsen/logrus"
+ //middleware "github.com/go-openapi/runtime/middleware"
+ "github.com/spf13/viper"
+ "github.com/spf13/cobra"
+ "github.com/getsentry/raven-go"
+)
+
+var cfgFile = "";
+
+var rootCmd = &cobra.Command{
+ Use: "fatcatd",
+ Short: "REST API Server",
+ Long: "A scalable, versioned, API-oriented catalog of bibliographic entities and file metadata",
+}
+
+func init() {
+ cobra.OnInitialize(initConfig)
+ rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is ./fatcatd.toml)")
+ rootCmd.PersistentFlags().BoolP("verbose", "v", false, "increase logging volume")
+
+ rootCmd.AddCommand(serveCmd)
+}
+
+func initConfig() {
+ viper.SetDefault("port", 9411)
+ viper.SetDefault("verbose", true)
+
+ viper.SetEnvPrefix("FATCAT")
+ viper.AutomaticEnv()
+
+
+ if cfgFile != "" {
+ // Use config file from the flag.
+ viper.SetConfigFile(cfgFile)
+ } else {
+ viper.SetConfigType("toml")
+ viper.AddConfigPath(".")
+ viper.SetConfigName("fatcatd")
+ }
+
+ err := viper.ReadInConfig()
+ if err != nil {
+ log.Fatalf("Error loading config: %s \n", err)
+ }
+
+ // not default of stderr
+ log.SetOutput(os.Stdout);
+
+ raven.SetDSN(viper.GetString("sentry_dsn"));
+
+}
+
+func Execute() {
+ if err := rootCmd.Execute(); err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+}