fiz config initialization

This commit is contained in:
andrzej 2024-11-06 01:34:06 +01:00
parent ff802ba435
commit 9954de7453
2 changed files with 42 additions and 34 deletions

View File

@ -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,21 +41,21 @@ func (config *Config) load() error {
}
configDir := homeDir + "/.config/gopaper/"
configRaw, err := os.ReadFile(configDir)
if err != nil {
if !os.IsExist(err) {
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
}
//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")
@ -66,15 +71,15 @@ func (config *Config) load() error {
file.Write(defaultConfigJSON)
*config = defaultConfig
}
} else {
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 + "/"

View File

@ -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