From de4387bd08cfb26c497114367fb1749d04782c70 Mon Sep 17 00:00:00 2001 From: Simon Garrelou Date: Thu, 8 Dec 2022 22:39:57 +0100 Subject: Change commnd-line options --- cmd/main.go | 41 ++++++++++++++++++++++------------------- src/config.go | 13 ++++++------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index c1ff827..57687d9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -9,30 +9,33 @@ import ( ) var ( - baseURL = flag.String("url", "", "URL to your Subsonic server") - username = flag.String("username", "", "Subsonic username") - password = flag.String("password", "", "Subsonic password") + configFile = flag.String("config", "", "Path to the configuration file") ) func main() { flag.Parse() - cfg, err := src.LoadDefaultConfig() - if err != nil { - fmt.Printf("Could not start termsonic: %v", err) - os.Exit(1) - } - - if *baseURL != "" { - cfg.BaseURL = *baseURL - } - - if *username != "" { - cfg.Username = *username - } - - if *password != "" { - cfg.Password = *password + var cfg *src.Config + var err error + if *configFile == "" { + cfg, err = src.LoadDefaultConfig() + if err != nil { + fmt.Printf("Could not start termsonic: %v", err) + os.Exit(1) + } + } else { + f, err := os.Open(*configFile) + if err != nil { + fmt.Printf("Could not read configuration file: %v", err) + os.Exit(1) + } + f.Close() + + cfg, err = src.LoadConfigFromFile(*configFile) + if err != nil { + fmt.Printf("Error loading configuration file: %v", err) + os.Exit(1) + } } src.Run(cfg) diff --git a/src/config.go b/src/config.go index 1b4a998..2769cae 100644 --- a/src/config.go +++ b/src/config.go @@ -10,6 +10,8 @@ import ( ) type Config struct { + path string + BaseURL string Username string Password string @@ -19,6 +21,8 @@ func LoadConfigFromFile(filename string) (*Config, error) { var cfg Config _, err := toml.DecodeFile(filename, &cfg) + cfg.path = filename + return &cfg, err } @@ -32,7 +36,7 @@ func LoadDefaultConfig() (*Config, error) { if err != nil && !os.IsNotExist(err) { return nil, err } else if os.IsNotExist(err) { - return &Config{}, nil + return &Config{path: path}, nil } f.Close() @@ -74,12 +78,7 @@ func getConfigFilePath() (string, error) { } func (c *Config) Save() error { - path, err := getConfigFilePath() - if err != nil { - return err - } - - f, err := os.Create(path) + f, err := os.Create(c.path) if err != nil { return err } -- cgit v1.2.3