aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-08-11 17:33:07 +0200
committerMartin Polden <mpolden@mpolden.no>2018-08-11 17:33:07 +0200
commit2685e0ecdcff02c872868753eb1eabce20b74866 (patch)
treefe3ad957c18c8975d22d454713d2bee5793284cd
parent83341ee905ff99e5276091723634c202ad99c624 (diff)
Simplify
-rw-r--r--queue/config.go41
-rw-r--r--queue/config_test.go15
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)
}
}
}