return errors from function, instead of calling log.Fatal

This commit is contained in:
andrzej 2024-11-04 16:42:24 +01:00
parent 568dc2b8d4
commit 0c50f6fa72
2 changed files with 17 additions and 9 deletions

View File

@ -27,12 +27,13 @@ func makeDefaultConfig() Config {
} }
} }
func (config *Config) load() { func (config *Config) load() error {
j := jsonc.New() j := jsonc.New()
homeDir, err := os.UserHomeDir() homeDir, err := os.UserHomeDir()
if err != nil { if err != nil {
log.Fatal("could not get home directory!", err) log.Println("could not get home directory!")
return err
} }
configPath := homeDir + "/.config/gopaper/config.jsonc" configPath := homeDir + "/.config/gopaper/config.jsonc"
@ -42,12 +43,14 @@ func (config *Config) load() {
defaultConfig := makeDefaultConfig() defaultConfig := makeDefaultConfig()
defaultConfigJSON, err := json.MarshalIndent(defaultConfig, "", "") defaultConfigJSON, err := json.MarshalIndent(defaultConfig, "", "")
if err != nil { if err != nil {
log.Fatal("could not encode default config!", err) log.Println("could not encode default config!")
return err
} }
file, err := os.Create(configPath) file, err := os.Create(configPath)
defer file.Close() defer file.Close()
if err != nil { if err != nil {
log.Fatal("could not create config file!", err) log.Println("could not create config file!")
return err
} }
file.Write(defaultConfigJSON) file.Write(defaultConfigJSON)
*config = defaultConfig *config = defaultConfig
@ -57,7 +60,8 @@ func (config *Config) load() {
configRaw = j.Strip(configRaw) configRaw = j.Strip(configRaw)
err = json.Unmarshal(configRaw, &config) err = json.Unmarshal(configRaw, &config)
if err != nil { if err != nil {
log.Fatal("Couldn't unmarshal config!\n", err) log.Println("Couldn't unmarshal config!")
return err
} }
} }
@ -71,4 +75,5 @@ func (config *Config) load() {
} }
config.ImagesDir = homeDir + "/" + config.ImagesDir + "/" config.ImagesDir = homeDir + "/" + config.ImagesDir + "/"
return nil
} }

11
main.go
View File

@ -1,8 +1,7 @@
package main package main
import ( import (
"fmt" "log"
// "log"
"os" "os"
"sync" "sync"
) )
@ -10,9 +9,13 @@ import (
var config Config var config Config
func main() { func main() {
err := config.load()
if err != nil {
log.Println("failed to load config", err)
cleanExit(1)
}
config.load() log.Printf("%+v\n", config)
fmt.Printf("%+v\n", config)
var waitGroup sync.WaitGroup var waitGroup sync.WaitGroup
waitGroup.Add(1) waitGroup.Add(1)