package daemon import ( "fmt" "log" "github.com/go-flucky/flucky/pkg/config" "github.com/go-flucky/flucky/pkg/daemon" "github.com/spf13/cobra" "github.com/volker-raschek/go-logger/pkg/logger" ) var ( cachedMeasuredValues uint compression bool round float64 temperatureUnit string ) // InitCmd initialize all daemon subcommands func InitCmd(cmd *cobra.Command) error { daemonCmd := &cobra.Command{ Use: "daemon", Short: "Read continuously data from all enabled sensors", Example: "flucky daemon", RunE: run, } daemonCmd.Flags().BoolVar(&compression, "compression", true, "Compress measured values") daemonCmd.Flags().UintVar(&cachedMeasuredValues, "cached-values", 500, "Number of cached values before saveing into the storage endpoint") daemonCmd.Flags().Float64Var(&round, "round", 0.5, "Round values. The value 0 deactivates the function") cmd.AddCommand(daemonCmd) return nil } func run(cmd *cobra.Command, args []string) error { configFile, err := cmd.Flags().GetString("config") if err != nil { return fmt.Errorf("No config file defined: %v", err) } // WARNING: Must set logger for daemon package // logLevel, err := cmd.Flags().GetString("loglevel") // if err != nil { // return fmt.Errorf("No loglevel defined: %v", err) // } //flogger := initializeLogger(logLevel) // daemon.SetLogLevel(flogger) cnf, err := config.Read(configFile) if err != nil { return err } return daemon.Start(cnf, cachedMeasuredValues, compression, round) } func initializeLogger(logLevel string) logger.Logger { log.Println(logLevel) switch logLevel { case "debug", "DEBUG": return logger.NewDefaultLogger(logger.LogLevelDebug) case "info", "INFO": return logger.NewDefaultLogger(logger.LogLevelInfo) case "warn", "WARN": return logger.NewDefaultLogger(logger.LogLevelWarn) case "error", "ERROR": return logger.NewDefaultLogger(logger.LogLevelError) case "fatal", "FATAL": return logger.NewDefaultLogger(logger.LogLevelFatal) default: return nil } }