fiz config initialization
This commit is contained in:
parent
ff802ba435
commit
f8c15b4c49
67
config.go
67
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 + "/"
|
||||
|
|
10
main.go
10
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
|
||||
|
|
Loading…
Reference in New Issue