ditty/config.go

49 lines
821 B
Go
Raw Normal View History

2020-01-22 22:54:55 +00:00
package main
import (
"fmt"
"io/ioutil"
"os"
"path"
"gopkg.in/yaml.v2"
)
type appConfig struct {
Input map[string][]string
}
var config = &appConfig{}
func defaultConfigPath() string {
homedir, err := os.UserHomeDir()
if err == nil && homedir != "" {
return path.Join(homedir, ".config", "ditty", "config.yaml")
}
return ""
}
func readConfig(configPath string) error {
if configPath == "" {
configPath = defaultConfigPath()
if configPath == "" {
return nil
} else if _, err := os.Stat(configPath); os.IsNotExist(err) {
return nil
}
}
configData, err := ioutil.ReadFile(configPath)
if err != nil {
return fmt.Errorf("failed to read file: %s", err)
}
err = yaml.Unmarshal(configData, config)
if err != nil {
return fmt.Errorf("failed to parse file: %s", err)
}
return nil
}