diff --git a/main.go b/main.go index 7d67157..aaa8b58 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "bytes" "context" "encoding/json" "flag" @@ -13,6 +14,7 @@ import ( "regexp" "strings" "syscall" + "text/template" yaml "gopkg.in/yaml.v3" ) @@ -95,7 +97,7 @@ func Main(ctx context.Context) error { flags := flag.NewFlagSet(os.Args[0], flag.ContinueOnError) overridesS := flags.String("c", `{"title":"","season":"","episode":""}`, "overrides") ind := flags.String("i", "/dev/null", "in dir") - outd := flags.String("o", "/dev/null", "out dir") + outd := flags.String("o", "/dev/null", "out dir template accepts overrides format title case") dry := flags.Bool("d", true, "dry run") if err := flags.Parse(os.Args[1:]); err != nil { panic(err) @@ -182,7 +184,16 @@ func one(ctx context.Context, outd, inf string, patterns []string, overrides Fie } func foundOne(ctx context.Context, outd, inf string, fields Fields, mvNLn MvNLn) error { - outf := path.Join(outd, fmt.Sprintf("%s_S%sE%s%s", fields.Title, fields.Season, fields.Episode, path.Ext(inf))) + tmpl, err := template.New(inf).Parse(outd) + if err != nil { + return err + } + buff := bytes.NewBuffer(nil) + if err := tmpl.Execute(buff, fields); err != nil { + return err + } + + outf := path.Join(string(buff.Bytes()), fmt.Sprintf("%s_S%sE%s%s", fields.Title, fields.Season, fields.Episode, path.Ext(inf))) return mvNLn(outf, inf) } diff --git a/main_test.go b/main_test.go index 1755a3c..2bb63e2 100644 --- a/main_test.go +++ b/main_test.go @@ -170,7 +170,7 @@ func TestRecursive(t *testing.T) { // parse files write("./showB/.show-ingestion.yaml", `{ - "o": "`+outd+`/B", + "o": "`+outd+`/B_{{.Title}}_{{.Season}}_{{.Episode}}", "p": [] }`) write("./showB/title S01E02.b") @@ -198,7 +198,7 @@ func TestRecursive(t *testing.T) { } exists(t, path.Join(outd, "A", "A_SAEA.a")) - exists(t, path.Join(outd, "B", "title_S01E02.b")) + exists(t, path.Join(outd, "B_title_01_02", "title_S01E02.b")) exists(t, path.Join(outd, "C", "t_SsEe.c")) notExists(t, path.Join(outd, "D", "title_S02E04.d")) notExists(t, path.Join(outd, "title_S03E06.e"))