From 4318414c02363e14f755b0003bfda83ee80c32ec Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Mon, 20 Sep 2021 19:19:52 +0200 Subject: cmd: Respect replacements when classifying --- queue/config.go | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'queue/config.go') diff --git a/queue/config.go b/queue/config.go index bff5572..59b07a7 100644 --- a/queue/config.go +++ b/queue/config.go @@ -35,6 +35,7 @@ type LocalDir struct { Dir string Replacements []Replacement Template *template.Template `json:"-"` + parser parser.Parser } type Site struct { @@ -51,19 +52,24 @@ type Site struct { SkipExisting bool SkipFiles bool LocalDir string + localDir LocalDir Priorities []string priorities []*regexp.Regexp PostCommand string postCommand *exec.Cmd Merge bool Skip bool - itemParser } -type itemParser struct { - parser parser.Parser - template *template.Template - replacements []Replacement +func (d *LocalDir) Media(name string) (parser.Media, error) { + m, err := d.parser(filepath.Base(name)) + if err != nil { + return parser.Media{}, err + } + for _, r := range d.Replacements { + m.ReplaceName(r.pattern, r.Replacement) + } + return m, nil } func compilePatterns(patterns []string) ([]*regexp.Regexp, error) { @@ -129,7 +135,7 @@ func command(cmd string) (*exec.Cmd, error) { } func (c *Config) load() error { - itemParsers := make(map[string]itemParser) + localDirs := make(map[string]LocalDir) for i, d := range c.LocalDirs { if d.Name == "" { return fmt.Errorf("invalid local dir name: %q", d.Name) @@ -137,7 +143,7 @@ func (c *Config) load() error { if d.Dir == "" { return fmt.Errorf("invalid local dir path: %q", d.Dir) } - if _, ok := itemParsers[d.Name]; ok { + if _, ok := localDirs[d.Name]; ok { return fmt.Errorf("invalid local dir: %q: declared multiple times", d.Name) } var parserFunc parser.Parser @@ -160,12 +166,10 @@ func (c *Config) load() error { if err != nil { return err } - itemParsers[d.Name] = itemParser{ - parser: parserFunc, - replacements: replacements, - template: tmpl, - } + c.LocalDirs[i].parser = parserFunc + c.LocalDirs[i].Replacements = replacements c.LocalDirs[i].Template = tmpl + localDirs[d.Name] = c.LocalDirs[i] } for i := range c.Sites { site := &c.Sites[i] @@ -196,11 +200,11 @@ func (c *Config) load() error { } site.postCommand = cmd - itemParser, ok := itemParsers[site.LocalDir] + localDir, ok := localDirs[site.LocalDir] if !ok { return fmt.Errorf("site: %q: invalid local dir: %q", site.Name, site.LocalDir) } - site.itemParser = itemParser + site.localDir = localDir } return nil } -- cgit v1.2.3