diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-08-11 17:33:07 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-08-11 17:33:07 +0200 |
commit | 2685e0ecdcff02c872868753eb1eabce20b74866 (patch) | |
tree | fe3ad957c18c8975d22d454713d2bee5793284cd | |
parent | 83341ee905ff99e5276091723634c202ad99c624 (diff) |
Simplify
-rw-r--r-- | queue/config.go | 41 | ||||
-rw-r--r-- | queue/config_test.go | 15 |
2 files changed, 28 insertions, 28 deletions
diff --git a/queue/config.go b/queue/config.go index 5e64f0f..f8b4469 100644 --- a/queue/config.go +++ b/queue/config.go @@ -110,17 +110,17 @@ func command(cmd string) (*exec.Cmd, error) { return exec.Command(argv[0], argv[1:]...), nil } -func (c *Config) itemParsers() (map[string]itemParser, error) { +func (c *Config) load() error { itemParsers := make(map[string]itemParser) for _, d := range c.LocalDirs { if d.Name == "" { - return nil, fmt.Errorf("invalid local dir name: %q", d.Name) + return fmt.Errorf("invalid local dir name: %q", d.Name) } if d.Dir == "" { - return nil, fmt.Errorf("invalid local dir path: %q", d.Dir) + return fmt.Errorf("invalid local dir path: %q", d.Dir) } if _, ok := itemParsers[d.Name]; ok { - return nil, fmt.Errorf("invalid local dir: %q: declared multiple times", d.Name) + return fmt.Errorf("invalid local dir: %q: declared multiple times", d.Name) } var parserFunc parser.Parser switch d.Parser { @@ -131,16 +131,16 @@ func (c *Config) itemParsers() (map[string]itemParser, error) { case "": parserFunc = parser.Default default: - return nil, fmt.Errorf("invalid local dir %q: invalid parser: %q (must be %q, %q or %q)", + return fmt.Errorf("invalid local dir %q: invalid parser: %q (must be %q, %q or %q)", d.Name, d.Parser, "show", "movie", "") } tmpl, err := parseTemplate(d.Dir) if err != nil { - return nil, err + return err } replacements, err := compileReplacements(d.Replacements) if err != nil { - return nil, err + return err } itemParsers[d.Name] = itemParser{ parser: parserFunc, @@ -148,14 +148,6 @@ func (c *Config) itemParsers() (map[string]itemParser, error) { template: tmpl, } } - return itemParsers, nil -} - -func (c *Config) load() error { - itemParsers, err := c.itemParsers() - if err != nil { - return err - } for i := range c.Sites { site := &c.Sites[i] maxAge, err := time.ParseDuration(site.MaxAge) @@ -195,18 +187,17 @@ func (c *Config) load() error { } func (c *Config) SetLocalDir(name string) error { - itemParsers, err := c.itemParsers() - if err != nil { - return err + newCfg := *c + newCfg.Sites = make([]Site, len(c.Sites)) + for i, s := range c.Sites { + s.LocalDir = name + newCfg.Sites[i] = s } - _, ok := itemParsers[name] - if !ok { - return fmt.Errorf("invalid local dir: %q", name) - } - for i := range c.Sites { - c.Sites[i].LocalDir = name + if err := newCfg.load(); err != nil { + return err } - return c.load() + *c = newCfg + return nil } func (c *Config) JSON() ([]byte, error) { diff --git a/queue/config_test.go b/queue/config_test.go index 99c8f29..1592bb1 100644 --- a/queue/config_test.go +++ b/queue/config_test.go @@ -119,7 +119,7 @@ func TestReadConfig(t *testing.T) { } } -func TestOverrideLocalDir(t *testing.T) { +func TestSetLocalDir(t *testing.T) { jsonConfig := ` { "LocalDirs": [ @@ -155,12 +155,21 @@ func TestOverrideLocalDir(t *testing.T) { if err := cfg.load(); err != nil { t.Fatal(err) } + if err := cfg.SetLocalDir("invalid"); err == nil { + t.Fatal("want error") + } + // Config remains unchanged after invalid local dir + for _, s := range cfg.Sites { + if want := "d1"; s.LocalDir != want { + t.Errorf("got %q, want %q", s.LocalDir, want) + } + } if err := cfg.SetLocalDir("d2"); err != nil { t.Fatal(err) } for _, s := range cfg.Sites { - if s.LocalDir != "d2" { - t.Errorf("got %q, want %q for Name=%q", s.LocalDir, "d2", s.Name) + if want := "d2"; s.LocalDir != want { + t.Errorf("got %q, want %q", s.LocalDir, want) } } } |