Don't panic if a non-critical file disappears. Fixes #315
This commit is contained in:
parent
a1ddad24c4
commit
1ea20b6df7
@ -187,7 +187,10 @@ func (config *Config) LoadAll() {
|
|||||||
|
|
||||||
// Load loads the config from config.yaml in the directory given to the config struct.
|
// Load loads the config from config.yaml in the directory given to the config struct.
|
||||||
func (config *Config) Load() {
|
func (config *Config) Load() {
|
||||||
config.load("config", config.Dir, "config.yaml", config)
|
err := config.load("config", config.Dir, "config.yaml", config)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to load config.yaml: %w", err))
|
||||||
|
}
|
||||||
config.CreateCacheDirs()
|
config.CreateCacheDirs()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +212,7 @@ func (config *Config) Save() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) LoadPreferences() {
|
func (config *Config) LoadPreferences() {
|
||||||
config.load("user preferences", config.CacheDir, "preferences.yaml", &config.Preferences)
|
_ = config.load("user preferences", config.CacheDir, "preferences.yaml", &config.Preferences)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) SavePreferences() {
|
func (config *Config) SavePreferences() {
|
||||||
@ -247,7 +250,7 @@ func (config *Config) LoadKeybindings() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("failed to unmarshal default keybindings: %w", err))
|
panic(fmt.Errorf("failed to unmarshal default keybindings: %w", err))
|
||||||
}
|
}
|
||||||
config.load("keybindings", config.Dir, "keybindings.yaml", &inputConfig)
|
_ = config.load("keybindings", config.Dir, "keybindings.yaml", &inputConfig)
|
||||||
|
|
||||||
config.Keybindings.Main = parseKeybindings(inputConfig.Main)
|
config.Keybindings.Main = parseKeybindings(inputConfig.Main)
|
||||||
config.Keybindings.Room = parseKeybindings(inputConfig.Room)
|
config.Keybindings.Room = parseKeybindings(inputConfig.Room)
|
||||||
@ -260,7 +263,10 @@ func (config *Config) SaveKeybindings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) LoadAuthCache() {
|
func (config *Config) LoadAuthCache() {
|
||||||
config.load("auth cache", config.CacheDir, "auth-cache.yaml", &config.AuthCache)
|
err := config.load("auth cache", config.CacheDir, "auth-cache.yaml", &config.AuthCache)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to load auth-cache.yaml: %w", err))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) SaveAuthCache() {
|
func (config *Config) SaveAuthCache() {
|
||||||
@ -268,7 +274,8 @@ func (config *Config) SaveAuthCache() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) LoadPushRules() {
|
func (config *Config) LoadPushRules() {
|
||||||
config.load("push rules", config.CacheDir, "pushrules.json", &config.PushRules)
|
_ = config.load("push rules", config.CacheDir, "pushrules.json", &config.PushRules)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) SavePushRules() {
|
func (config *Config) SavePushRules() {
|
||||||
@ -278,21 +285,21 @@ func (config *Config) SavePushRules() {
|
|||||||
config.save("push rules", config.CacheDir, "pushrules.json", &config.PushRules)
|
config.save("push rules", config.CacheDir, "pushrules.json", &config.PushRules)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) load(name, dir, file string, target interface{}) {
|
func (config *Config) load(name, dir, file string, target interface{}) error {
|
||||||
err := os.MkdirAll(dir, 0700)
|
err := os.MkdirAll(dir, 0700)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
debug.Print("Failed to create", dir)
|
debug.Print("Failed to create", dir)
|
||||||
panic(err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
path := filepath.Join(dir, file)
|
path := filepath.Join(dir, file)
|
||||||
data, err := ioutil.ReadFile(path)
|
data, err := ioutil.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
debug.Print("Failed to read", name, "from", path)
|
debug.Print("Failed to read", name, "from", path)
|
||||||
panic(err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasSuffix(file, ".yaml") {
|
if strings.HasSuffix(file, ".yaml") {
|
||||||
@ -302,8 +309,9 @@ func (config *Config) load(name, dir, file string, target interface{}) {
|
|||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
debug.Print("Failed to parse", name, "at", path)
|
debug.Print("Failed to parse", name, "at", path)
|
||||||
panic(err)
|
return err
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) save(name, dir, file string, source interface{}) {
|
func (config *Config) save(name, dir, file string, source interface{}) {
|
||||||
|
Loading…
Reference in New Issue
Block a user