diff --git a/config.go b/config.go index d1497a0..8d7b1e0 100644 --- a/config.go +++ b/config.go @@ -2,10 +2,15 @@ package main import ( "encoding/json" + "errors" + "io/fs" + "fmt" + "log" "os" "github.com/adhocore/jsonc" + // "github.com/adhocore/jsonc" ) type Config struct { @@ -21,7 +26,7 @@ func makeDefaultConfig() Config { return Config{ ImageFilters: ImageFilters, ImagesDir: "bgs", - Duration: 1, + Duration: 60, Cache: ".gopaper", } } @@ -36,45 +41,45 @@ 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) + log.Printf("config: %v", 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..38962bb 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