diff options
author | Simon Garrelou <simon.garrelou@gmail.com> | 2022-12-08 22:39:57 +0100 |
---|---|---|
committer | Simon Garrelou <simon.garrelou@gmail.com> | 2022-12-08 22:39:57 +0100 |
commit | de4387bd08cfb26c497114367fb1749d04782c70 (patch) | |
tree | 55ed766ad1857f1606d358cbc1764e5dbb3783d1 | |
parent | 7e4333dac70cdb003e71b6805ed4d81f18aa233a (diff) | |
download | termsonic-de4387bd08cfb26c497114367fb1749d04782c70.tar.gz termsonic-de4387bd08cfb26c497114367fb1749d04782c70.zip |
Change commnd-line options
-rw-r--r-- | cmd/main.go | 41 | ||||
-rw-r--r-- | 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 ( | |||
9 | ) | 9 | ) |
10 | 10 | ||
11 | var ( | 11 | var ( |
12 | baseURL = flag.String("url", "", "URL to your Subsonic server") | 12 | configFile = flag.String("config", "", "Path to the configuration file") |
13 | username = flag.String("username", "", "Subsonic username") | ||
14 | password = flag.String("password", "", "Subsonic password") | ||
15 | ) | 13 | ) |
16 | 14 | ||
17 | func main() { | 15 | func main() { |
18 | flag.Parse() | 16 | flag.Parse() |
19 | 17 | ||
20 | cfg, err := src.LoadDefaultConfig() | 18 | var cfg *src.Config |
21 | if err != nil { | 19 | var err error |
22 | fmt.Printf("Could not start termsonic: %v", err) | 20 | if *configFile == "" { |
23 | os.Exit(1) | 21 | cfg, err = src.LoadDefaultConfig() |
24 | } | 22 | if err != nil { |
25 | 23 | fmt.Printf("Could not start termsonic: %v", err) | |
26 | if *baseURL != "" { | 24 | os.Exit(1) |
27 | cfg.BaseURL = *baseURL | 25 | } |
28 | } | 26 | } else { |
29 | 27 | f, err := os.Open(*configFile) | |
30 | if *username != "" { | 28 | if err != nil { |
31 | cfg.Username = *username | 29 | fmt.Printf("Could not read configuration file: %v", err) |
32 | } | 30 | os.Exit(1) |
33 | 31 | } | |
34 | if *password != "" { | 32 | f.Close() |
35 | cfg.Password = *password | 33 | |
34 | cfg, err = src.LoadConfigFromFile(*configFile) | ||
35 | if err != nil { | ||
36 | fmt.Printf("Error loading configuration file: %v", err) | ||
37 | os.Exit(1) | ||
38 | } | ||
36 | } | 39 | } |
37 | 40 | ||
38 | src.Run(cfg) | 41 | 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 ( | |||
10 | ) | 10 | ) |
11 | 11 | ||
12 | type Config struct { | 12 | type Config struct { |
13 | path string | ||
14 | |||
13 | BaseURL string | 15 | BaseURL string |
14 | Username string | 16 | Username string |
15 | Password string | 17 | Password string |
@@ -19,6 +21,8 @@ func LoadConfigFromFile(filename string) (*Config, error) { | |||
19 | var cfg Config | 21 | var cfg Config |
20 | _, err := toml.DecodeFile(filename, &cfg) | 22 | _, err := toml.DecodeFile(filename, &cfg) |
21 | 23 | ||
24 | cfg.path = filename | ||
25 | |||
22 | return &cfg, err | 26 | return &cfg, err |
23 | } | 27 | } |
24 | 28 | ||
@@ -32,7 +36,7 @@ func LoadDefaultConfig() (*Config, error) { | |||
32 | if err != nil && !os.IsNotExist(err) { | 36 | if err != nil && !os.IsNotExist(err) { |
33 | return nil, err | 37 | return nil, err |
34 | } else if os.IsNotExist(err) { | 38 | } else if os.IsNotExist(err) { |
35 | return &Config{}, nil | 39 | return &Config{path: path}, nil |
36 | } | 40 | } |
37 | f.Close() | 41 | f.Close() |
38 | 42 | ||
@@ -74,12 +78,7 @@ func getConfigFilePath() (string, error) { | |||
74 | } | 78 | } |
75 | 79 | ||
76 | func (c *Config) Save() error { | 80 | func (c *Config) Save() error { |
77 | path, err := getConfigFilePath() | 81 | f, err := os.Create(c.path) |
78 | if err != nil { | ||
79 | return err | ||
80 | } | ||
81 | |||
82 | f, err := os.Create(path) | ||
83 | if err != nil { | 82 | if err != nil { |
84 | return err | 83 | return err |
85 | } | 84 | } |