fix: breaking changes

changes:
- remove remote operations
- add function to write measured values into a channel
- add get humidity sensors from config
- add get temperature sensors from config
- remove FileLogger
- exclude some functions from pkf into internal
This commit is contained in:
2019-06-13 21:25:32 +02:00
parent 98e5f3a536
commit 5220eac16b
39 changed files with 481 additions and 1376 deletions

View File

@ -5,11 +5,8 @@ import (
"os"
"time"
lg "github.com/volker-raschek/flucky/cmd/logger"
"github.com/volker-raschek/flucky/cmd/remote"
"github.com/volker-raschek/flucky/cmd/sensor"
"github.com/volker-raschek/flucky/cmd/temperature"
"github.com/volker-raschek/flucky/pkg/logger"
"github.com/volker-raschek/flucky/pkg/types"
uuid "github.com/satori/go.uuid"
@ -17,7 +14,7 @@ import (
"github.com/volker-raschek/flucky/pkg/config"
)
var cfg string
var configPath string
var rootCmd = &cobra.Command{
Use: "flucky",
@ -25,28 +22,21 @@ var rootCmd = &cobra.Command{
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
// check if config file exists
if _, err := os.Stat(cfg); os.IsNotExist(err) {
if _, err := os.Stat(configPath); os.IsNotExist(err) {
hostname, err := os.Hostname()
if err != nil {
return fmt.Errorf("Can not locate the hostname: %v", err)
}
logfiles := make(map[logger.LogValue][]string)
logfiles[logger.LogHumidity] = []string{"/var/log/flucky/humidity.json"}
logfiles[logger.LogTemperature] = []string{"/var/log/flucky/temperature.json"}
fc := config.FluckyConfig{
cnf := config.Configuration{
Device: &types.Device{
DeviceID: uuid.NewV4().String(),
DeviceName: hostname,
CreationDate: time.Now(),
},
FileLogger: &logger.FileLogger{
LogFiles: logfiles,
},
}
err = config.Write(&fc, cfg)
err = config.Write(&cnf, configPath)
if err != nil {
return err
}
@ -60,13 +50,9 @@ var rootCmd = &cobra.Command{
func Execute(version string) {
rootCmd.Version = version
rootCmd.PersistentFlags().StringVar(&cfg, "config", "/etc/flucky/config.json", "Config file")
lg.InitCmd(rootCmd, cfg)
rootCmd.PersistentFlags().StringVar(&configPath, "config", "/etc/flucky/config.json", "Config file")
// humidity.InitCmd(rootCmd, configDir)
remote.InitCmd(rootCmd, cfg)
sensor.InitCmd(rootCmd, cfg)
temperature.InitCmd(rootCmd, cfg)
sensor.InitCmd(rootCmd, configPath)
temperature.InitCmd(rootCmd, configPath)
rootCmd.Execute()
}

22
cmd/daemon/daemon.go Normal file
View File

@ -0,0 +1,22 @@
package daemon
import (
"github.com/spf13/cobra"
)
var configDir string
var daemonCmd = &cobra.Command{
Use: "daemon",
Short: "Read continuously data from all enabled sensors",
Run: func(cmd *cobra.Command, args []string) {
},
}
func InitCmd(cmd *cobra.Command, cnf string) {
configDir = cnf
cmd.AddCommand(daemonCmd)
}

View File

@ -1,54 +0,0 @@
package logger
import (
"log"
"github.com/volker-raschek/flucky/pkg/logger"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var enabled bool
var addLoggerCmd = &cobra.Command{
Use: "add",
Short: "Add internal logger",
Args: cobra.ExactArgs(2),
Aliases: []string{"append"},
Example: "flucky logger add temperature /var/log/flucky/temperature.log",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// loggertype, err := logger.StringToLoggerType(args[0])
// if err != nil {
// log.Fatalln(err)
// }
logvalue, err := logger.StringToLogValue(args[0])
if err != nil {
log.Fatalln(err)
}
err = fc.AddLogFile(args[1], logvalue)
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
loggerCmd.AddCommand(addLoggerCmd)
}

View File

@ -1,40 +0,0 @@
package logger
import (
"log"
"os"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/cli"
"github.com/volker-raschek/flucky/pkg/config"
)
var quiet bool
var listLoggerCmd = &cobra.Command{
Use: "ls",
Short: "List internal Loggers",
Aliases: []string{"list"},
Example: "flucky logger ls",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// print all configured remote addresses on stdout
cli.PrintLoggers(fc, os.Stdout)
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
loggerCmd.AddCommand(listLoggerCmd)
}

View File

@ -1,18 +0,0 @@
package logger
import (
"github.com/spf13/cobra"
)
var cfg string
var loggerCmd = &cobra.Command{
Use: "logger",
Short: "Manage internal logger",
}
func InitCmd(cmd *cobra.Command, config string) {
cfg = config
cmd.AddCommand(loggerCmd)
}

View File

@ -1,40 +0,0 @@
package logger
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var rmLoggerCmd = &cobra.Command{
Use: "rm",
Short: "Remove internal logger",
Args: cobra.ExactArgs(1),
Aliases: []string{"remove"},
Example: "flucky logger rm /var/log/flucky/temperature.log",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
err = fc.RemoveLogFile(args[0])
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
loggerCmd.AddCommand(rmLoggerCmd)
}

View File

@ -1,51 +0,0 @@
package remote
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var enabled bool
var addRemoteCmd = &cobra.Command{
Use: "add",
Short: "Add Remote Server",
Args: cobra.ExactArgs(2),
Aliases: []string{"append"},
Example: "flucky remote add origin https://example.local",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// create new remote struct
remote := config.Remote{
Name: args[0],
Address: args[1],
Enabled: enabled,
}
// // add remote entry to list
err = fc.AddRemote(&remote)
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(addRemoteCmd)
addRemoteCmd.Flags().BoolVarP(&enabled, "enable", "e", true, "Enable")
}

View File

@ -1,40 +0,0 @@
package remote
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var disableRemoteCmd = &cobra.Command{
Use: "disable",
Short: "Disable Remove Server",
Args: cobra.ExactArgs(1),
Example: "flucky remote disable origin",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// disnable remote address
err = fc.DisableRemote(args[0])
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(disableRemoteCmd)
}

View File

@ -1,39 +0,0 @@
package remote
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var enableRemoteCmd = &cobra.Command{
Use: "enable",
Short: "Enable Remove Server",
Args: cobra.ExactArgs(1),
Example: "flucky remote enable origin",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// enable remote address
err = fc.EnableRemote(args[0])
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(enableRemoteCmd)
}

View File

@ -1,43 +0,0 @@
package remote
import (
"log"
"os"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/cli"
"github.com/volker-raschek/flucky/pkg/config"
)
var quiet bool
var listRemoteCmd = &cobra.Command{
Use: "ls",
Short: "List Remove Servers",
Aliases: []string{"list"},
Example: "flucky remote ls",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// print all configured remote addresses on stdout
err = cli.PrintRemotes(fc, os.Stdout)
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(listRemoteCmd)
}

View File

@ -1,18 +0,0 @@
package remote
import (
"github.com/spf13/cobra"
)
var cfg string
var remoteCmd = &cobra.Command{
Use: "remote",
Short: "Manage Remote Server",
}
func InitCmd(cmd *cobra.Command, config string) {
cfg = config
cmd.AddCommand(remoteCmd)
}

View File

@ -1,40 +0,0 @@
package remote
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var rmRemoteCmd = &cobra.Command{
Use: "rm",
Short: "Remove Remote Server",
Aliases: []string{"remove"},
Args: cobra.ExactArgs(1),
Example: "flucky remote rm origin",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// add remote entry to list
err = fc.RemoveRemote(args[0])
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(rmRemoteCmd)
}

View File

@ -1,40 +0,0 @@
package remote
import (
"log"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/config"
)
var renameRemoteCmd = &cobra.Command{
Use: "rename",
Short: "Rename Remote Server",
Args: cobra.ExactArgs(2),
Example: "flucky remote rename origin slave",
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
// rename remote address
err = fc.RenameRemote(args[0], args[1])
if err != nil {
log.Fatalln(err)
}
// save new configuration
err = config.Write(fc, cfg)
if err != nil {
log.Fatalln(err)
}
},
}
func init() {
remoteCmd.AddCommand(renameRemoteCmd)
}

28
cmd/temperature/list.go Normal file
View File

@ -0,0 +1,28 @@
package temperature
import (
"fmt"
"github.com/spf13/cobra"
)
var listTemperatureCmd = &cobra.Command{
Use: "list",
Short: "print temperatures",
Example: fmt.Sprintf("flucky temperature logs"),
Run: func(cmd *cobra.Command, args []string) {
// read configuration
// fc, err := config.Read(cnfPath)
// if err != nil {
// list.Fatalln(err)
// }
//cli.PrintTemperatures(temperatures, fc, os.Stdout)
},
}
func init() {
temperatureCmd.AddCommand(listTemperatureCmd)
}

View File

@ -1,37 +0,0 @@
package temperature
import (
"fmt"
"log"
"os"
"github.com/spf13/cobra"
"github.com/volker-raschek/flucky/pkg/cli"
"github.com/volker-raschek/flucky/pkg/config"
)
var logTemperatureCmd = &cobra.Command{
Use: "log",
Short: "print temperature logs",
Example: fmt.Sprintf("flucky temperature logs"),
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
if err != nil {
log.Fatalln(err)
}
temperatures, err := fc.FileLogger.GetTemperatures(nil, nil, args)
if err != nil {
log.Fatalln(err)
}
cli.PrintTemperatures(temperatures, fc, os.Stdout)
},
}
func init() {
temperatureCmd.AddCommand(logTemperatureCmd)
}

View File

@ -1,22 +0,0 @@
package temperature
// import (
// "log"
// "github.com/spf13/cobra"
// )
// var pushTemperatureCmd = &cobra.Command{
// Use: "push",
// Short: "push temperature from sensor to remote servers",
// Run: func(cmd *cobra.Command, args []string) {
// if err := temperature.Push(configDir); err != nil {
// log.Fatal(err)
// }
// },
// }
// func init() {
// temperatureCmd.AddCommand(pushTemperatureCmd)
// }

View File

@ -20,16 +20,13 @@ var readTemperatureCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
// read configuration
fc, err := config.Read(cfg)
cnf, err := config.Read(cnfPath)
if err != nil {
log.Fatalln(err)
}
// fetch all temperature sensors
temperatureSensors, err := fc.GetTemperatureSensors(args)
if err != nil {
log.Fatalln(err)
}
temperatureSensors := cnf.GetTemperatureSensors()
// read temperature from sensors
temperatures, err := sensor.ReadTemperatures(temperatureSensors)
@ -38,14 +35,7 @@ var readTemperatureCmd = &cobra.Command{
}
// print temperatures on stdout
cli.PrintTemperatures(temperatures, fc, os.Stdout)
if logs {
err = fc.FileLogger.LogTemperatures(temperatures)
if err != nil {
log.Fatalln(err)
}
}
cli.PrintTemperatures(temperatures, cnf, os.Stdout)
},
}

View File

@ -6,7 +6,7 @@ import (
"github.com/spf13/cobra"
)
var cfg string
var cnfPath string
var temperatureCmd = &cobra.Command{
Use: "temperature",
@ -15,8 +15,8 @@ var temperatureCmd = &cobra.Command{
}
// Execute a
func InitCmd(cmd *cobra.Command, config string) {
cfg = config
func InitCmd(cmd *cobra.Command, configPath string) {
cnfPath = configPath
cmd.AddCommand(temperatureCmd)