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