fiz config initialization

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

View File

@ -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 + "/"

10
main.go
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
@ -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