Initial commit

This commit is contained in:
Thomas Boerger
2019-09-05 11:41:41 +02:00
commit 37a9b0ea0b
31 changed files with 2072 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
package command
import (
"os"
"strings"
"github.com/owncloud/reva-webdav/pkg/version"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// Root is the entry point for the reva-webdav command.
func Root() *cobra.Command {
cmd := &cobra.Command{
Use: "reva-webdav",
Short: "Reva service for webdav",
Long: ``,
Version: version.String,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
setupLogger()
setupConfig()
},
}
cmd.PersistentFlags().String("log-level", "", "Set logging level")
viper.BindPFlag("log.level", cmd.PersistentFlags().Lookup("log-level"))
viper.SetDefault("log.level", "info")
viper.BindEnv("log.level", "WEBDAV_LOG_LEVEL")
cmd.PersistentFlags().Bool("log-pretty", false, "Enable pretty logging")
viper.BindPFlag("log.pretty", cmd.PersistentFlags().Lookup("log-pretty"))
viper.SetDefault("log.pretty", true)
viper.BindEnv("log.pretty", "WEBDAV_LOG_PRETTY")
cmd.PersistentFlags().Bool("log-color", false, "Enable colored logging")
viper.BindPFlag("log.color", cmd.PersistentFlags().Lookup("log-color"))
viper.SetDefault("log.color", true)
viper.BindEnv("log.color", "WEBDAV_LOG_COLOR")
cmd.AddCommand(Server())
cmd.AddCommand(Health())
return cmd
}
func setupLogger() {
switch strings.ToLower(viper.GetString("log.level")) {
case "panic":
zerolog.SetGlobalLevel(zerolog.PanicLevel)
case "fatal":
zerolog.SetGlobalLevel(zerolog.FatalLevel)
case "error":
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
case "warn":
zerolog.SetGlobalLevel(zerolog.WarnLevel)
case "info":
zerolog.SetGlobalLevel(zerolog.InfoLevel)
case "debug":
zerolog.SetGlobalLevel(zerolog.DebugLevel)
default:
zerolog.SetGlobalLevel(zerolog.InfoLevel)
}
if viper.GetBool("log.pretty") {
log.Logger = log.Output(
zerolog.ConsoleWriter{
Out: os.Stderr,
NoColor: !viper.GetBool("log.color"),
},
)
}
}
func setupConfig() {
viper.SetConfigName("phoenix")
viper.AddConfigPath("/etc/reva")
viper.AddConfigPath("$HOME/.reva")
viper.AddConfigPath("./config")
if err := viper.ReadInConfig(); err != nil {
switch err.(type) {
case viper.ConfigFileNotFoundError:
log.Debug().
Msg("Continue without config")
case viper.UnsupportedConfigError:
log.Fatal().
Msg("Unsupported config type")
default:
if e := log.Debug(); e.Enabled() {
log.Fatal().
Err(err).
Msg("Failed to read config")
} else {
log.Fatal().
Msg("Failed to read config")
}
}
}
}
+10
View File
@@ -0,0 +1,10 @@
package command
import (
"github.com/spf13/viper"
)
func init() {
viper.SetDefault("server.addr", "0.0.0.0:8180")
viper.SetDefault("metrics.addr", "0.0.0.0:8190")
}
+27
View File
@@ -0,0 +1,27 @@
package command
import (
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// Health is the entrypoint for the health command.
func Health() *cobra.Command {
cmd := &cobra.Command{
Use: "health",
Short: "Check health status",
Long: "",
Run: func(cmd *cobra.Command, args []string) {
log.Info().
Str("addr", viper.GetString("metrics.addr")).
Msg("Executed health command")
},
}
cmd.Flags().String("metrics-addr", "", "Address to metrics endpoint")
viper.BindPFlag("metrics.addr", cmd.Flags().Lookup("metrics-addr"))
viper.BindEnv("metrics.addr", "WEBDAV_METRICS_ADDR")
return cmd
}
+27
View File
@@ -0,0 +1,27 @@
package command
import (
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// Server is the entrypoint for the server command.
func Server() *cobra.Command {
cmd := &cobra.Command{
Use: "server",
Short: "Start integrated server",
Long: "",
Run: func(cmd *cobra.Command, args []string) {
log.Info().
Str("addr", viper.GetString("server.addr")).
Msg("Executed server command")
},
}
cmd.Flags().String("server-addr", "", "Address to bind the server")
viper.BindPFlag("server.addr", cmd.Flags().Lookup("server-addr"))
viper.BindEnv("server.addr", "WEBDAV_SERVER_ADDR")
return cmd
}