From f8c15b4c49c1bb508c74aaa77eefd708b67d4837 Mon Sep 17 00:00:00 2001 From: andrzej Date: Wed, 6 Nov 2024 01:34:06 +0100 Subject: [PATCH] fiz config initialization --- config.go | 67 +++++++++++++++++++++++++++++-------------------------- main.go | 10 +++++---- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/config.go b/config.go index d1497a0..7a71eca 100644 --- a/config.go +++ b/config.go @@ -2,10 +2,14 @@ package main import ( "encoding/json" + "errors" + "io/fs" + "fmt" "os" "github.com/adhocore/jsonc" + // "github.com/adhocore/jsonc" ) type Config struct { @@ -21,7 +25,7 @@ func makeDefaultConfig() Config { return Config{ ImageFilters: ImageFilters, ImagesDir: "bgs", - Duration: 1, + Duration: 60, Cache: ".gopaper", } } @@ -36,45 +40,44 @@ func (config *Config) load() error { } configDir := homeDir + "/.config/gopaper/" - configRaw, err := os.ReadFile(configDir) - if err != nil { - if !os.IsExist(err) { - defaultConfig := makeDefaultConfig() - defaultConfigJSON, err := json.MarshalIndent(defaultConfig, "", "") - if err != nil { - elog.Println("could not encode default config!") - return err - } - //TODO: make parent directories if they don't exist - err = os.Mkdir(homeDir+"/.config", 755) - if err != nil && !os.IsExist(err) { - elog.Println("could not create .config directory", err) - return err - } - err = os.Mkdir(configDir, 755) - if err != nil && !os.IsExist(err) { - elog.Println("could not create .config/gopaper directory") - return err - } - - file, err := os.Create(configDir + "config.jsonc") - defer file.Close() - if err != nil { - elog.Println("could not create config file!") - return err - } - file.Write(defaultConfigJSON) - *config = defaultConfig + configRaw, readError := os.ReadFile(configDir + "config.jsonc") + if readError != nil && errors.Is(readError, fs.ErrNotExist) { + defaultConfig := makeDefaultConfig() + defaultConfigJSON, err := json.MarshalIndent(defaultConfig, "", "") + if err != nil { + elog.Println("could not encode default config!") + return err } - } else { + err = os.Mkdir(homeDir+"/.config", 755) + if err != nil && !os.IsExist(err) { + elog.Println("could not create .config directory", err) + return err + } + + err = os.Mkdir(configDir, 755) + if err != nil && !os.IsExist(err) { + elog.Println("could not create .config/gopaper directory") + return err + } + + file, err := os.Create(configDir + "config.jsonc") + defer file.Close() + if err != nil { + elog.Println("could not create config file!") + return err + } + file.Write(defaultConfigJSON) + *config = defaultConfig + } + + if readError == nil { configRaw = j.Strip(configRaw) err = json.Unmarshal(configRaw, &config) if err != nil { elog.Println("Couldn't unmarshal config!") return err } - } config.Cache = homeDir + "/" + config.Cache + "/" diff --git a/main.go b/main.go index 445a66e..6e5aaff 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,16 @@ package main import ( + "errors" "flag" - "github.com/natefinch/lumberjack" + "io/fs" "log" "os" "os/exec" "strconv" "sync" + + "github.com/natefinch/lumberjack" ) var config Config @@ -83,7 +86,7 @@ func cleanExit(code int) { func killPrevProc() error { //check if pidfile already exists - if _, err := os.Stat(pidfilePath); os.IsNotExist(err) { + if _, err := os.Stat(pidfilePath); errors.Is(err, fs.ErrNotExist) { return nil } //if it does, kill the process and delete the pidfile @@ -122,11 +125,10 @@ func handleProcesses() { } func setupLogging(debug bool) { - clog.Printf("debug: %v", debug) //SETUP LOGGERS if debug { logfile := config.Cache + "logfile" - clog.Printf("Logging to %v", logfile) + clog.Printf("DEBUG MODE. Logging to %v", logfile) output := &lumberjack.Logger{ Filename: logfile, MaxSize: 1, // megabytes after which new file is created