aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Garrelou <simon.garrelou@gmail.com>2022-12-08 22:39:57 +0100
committerSimon Garrelou <simon.garrelou@gmail.com>2022-12-08 22:39:57 +0100
commitde4387bd08cfb26c497114367fb1749d04782c70 (patch)
tree55ed766ad1857f1606d358cbc1764e5dbb3783d1
parent7e4333dac70cdb003e71b6805ed4d81f18aa233a (diff)
downloadtermsonic-de4387bd08cfb26c497114367fb1749d04782c70.tar.gz
termsonic-de4387bd08cfb26c497114367fb1749d04782c70.zip
Change commnd-line options
-rw-r--r--cmd/main.go41
-rw-r--r--src/config.go13
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
11var ( 11var (
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
17func main() { 15func 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
12type Config struct { 12type 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
76func (c *Config) Save() error { 80func (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 }