From 96a37e0439fa7dcb9e7966e80ce6029195083974 Mon Sep 17 00:00:00 2001 From: Carlo Strub Date: Sat, 3 Feb 2018 20:53:27 +0100 Subject: [PATCH] Do not require environment variables set for help (fixes #7) --- sisyphus/sisyphus.go | 85 ++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/sisyphus/sisyphus.go b/sisyphus/sisyphus.go index 0cd25f3..2083232 100644 --- a/sisyphus/sisyphus.go +++ b/sisyphus/sisyphus.go @@ -78,39 +78,6 @@ COPYRIGHT: {{.Copyright}} ` - dirsRaw, ok := os.LookupEnv("SISYPHUS_DIRS") - if !ok { - log.Fatal("Environment variable SISYPHUS_DIRS not set.") - } - dirsSplit := strings.Split(dirsRaw, ",") - - var maildirs []sisyphus.Maildir - for i := 0; i < len(dirsSplit); i++ { - maildirs = append(maildirs, sisyphus.Maildir(dirsSplit[i])) - } - - _, ok = os.LookupEnv("SISYPHUS_DURATION") - if !ok { - log.Fatal("Environment variable SISYPHUS_DURATION not set.") - } - - // app.Flags = []cli.Flag{ - // - // &cli.StringSliceFlag{ - // Name: "maildir, d", - // Value: &maildirPaths, - // EnvVars: []string{"SISYPHUS_DIRS"}, - // Usage: "Call multiple Maildirs by repeating this flag, i.e. --maildir \"./Maildir\" --maildir \"./Maildir2\"", - // }, - // &cli.StringFlag{ - // Name: "learn", - // Value: "12h", - // EnvVars: []string{"SISYPHUS_DURATION"}, - // Usage: "Time interval between to learn cycles", - // Destination: learnafter, - // }, - // } - app.Commands = []cli.Command{ { Name: "run", @@ -135,13 +102,7 @@ COPYRIGHT: `) - // Create missing Maildirs - err := sisyphus.LoadMaildirs(maildirs) - if err != nil { - log.WithFields(log.Fields{ - "err": err, - }).Fatal("Cannot load maildirs") - } + maildirs := loadConfig() // Open all databases dbs, err := sisyphus.LoadDatabases(maildirs) @@ -221,13 +182,7 @@ COPYRIGHT: Usage: "show statistics", Action: func(c *cli.Context) { - // Create missing Maildirs - err := sisyphus.LoadMaildirs(maildirs) - if err != nil { - log.WithFields(log.Fields{ - "err": err, - }).Fatal("Cannot load maildirs") - } + maildirs := loadConfig() // Open all backup databases dbs, err := sisyphus.LoadBackupDatabases(maildirs) @@ -286,6 +241,7 @@ func backup(maildirs []sisyphus.Maildir, dbs map[sisyphus.Maildir]*bolt.DB) { db := dbs[d] backup, err := os.Create(filepath.Join(string(d), "sisyphus.db.backup")) + if err != nil { log.WithFields(log.Fields{ "err": err, @@ -312,3 +268,38 @@ func backup(maildirs []sisyphus.Maildir, dbs map[sisyphus.Maildir]*bolt.DB) { return } + +// loadConfig checks the validity of the environment variables and +// loads the maildirs +func loadConfig() []sisyphus.Maildir { + + dirsRaw, ok := os.LookupEnv("SISYPHUS_DIRS") + if !ok { + log.Fatal("Environment variable SISYPHUS_DIRS not set.") + } + dirsSplit := strings.Split(dirsRaw, ",") + + var maildirs []sisyphus.Maildir + for i := 0; i < len(dirsSplit); i++ { + maildirs = append(maildirs, sisyphus.Maildir(dirsSplit[i])) + } + + // Create missing Maildirs + err := sisyphus.LoadMaildirs(maildirs) + if err != nil { + log.WithFields(log.Fields{ + "err": err, + }).Fatal("Cannot load maildirs") + } + + // Check duration configuration and set it to default value if + // not set + _, ok = os.LookupEnv("SISYPHUS_DURATION") + if !ok { + log.Info("Environment variable SISYPHUS_DURATION not set. Setting default value to 24h.") + os.Setenv("SISYPHUS_DURATION", "24h") + } + + return maildirs + +}