Compare commits

..

2 Commits

Author SHA1 Message Date
bel
54f67d6d77 flags 2025-04-04 23:14:41 -06:00
bel
caef12deb8 tests clear 2025-04-04 23:09:29 -06:00
2 changed files with 58 additions and 4 deletions

20
main.go
View File

@@ -3,6 +3,7 @@ package main
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"flag"
"fmt" "fmt"
"os" "os"
"os/signal" "os/signal"
@@ -24,13 +25,21 @@ func main() {
ctx, can := signal.NotifyContext(context.Background(), syscall.SIGINT) ctx, can := signal.NotifyContext(context.Background(), syscall.SIGINT)
defer can() defer can()
flags := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
overridesS := flags.String("o", `{"title":"","season":"","episode":""}`, "overrides")
ind := flags.String("i", "/dev/null", "in dir")
outd := flags.String("o", "/dev/null", "out dir")
if err := flags.Parse(os.Args[1:]); err != nil {
panic(err)
}
var overrides Fields var overrides Fields
json.Unmarshal([]byte(os.Args[3]), &overrides) json.Unmarshal([]byte(*overridesS), &overrides)
if err := Run(ctx, if err := Run(ctx,
os.Args[1], *outd,
os.Args[2], *ind,
os.Args[4:], flags.Args(),
overrides, overrides,
RealMvNLn, RealMvNLn,
); err != nil { ); err != nil {
@@ -95,6 +104,9 @@ func foundOne(ctx context.Context, outd, inf string, fields Fields, mvNLn MvNLn)
} }
func RealMvNLn(outf, inf string) error { func RealMvNLn(outf, inf string) error {
if stat, err := os.Stat(inf); err != nil || !stat.Mode().IsRegular() {
return fmt.Errorf("cannot mv_n_ln(%s): (%v) mode=%v", inf, err, stat.Mode())
}
if _, err := os.Stat(outf); err == nil { if _, err := os.Stat(outf); err == nil {
return nil // fmt.Errorf("conflict: %s already exists", path.Base(outf)) return nil // fmt.Errorf("conflict: %s already exists", path.Base(outf))
} }

View File

@@ -11,6 +11,48 @@ import (
main "gitea/show-ingestion" main "gitea/show-ingestion"
) )
func TestRunChoosesOne(t *testing.T) {
ind := t.TempDir()
outd := t.TempDir()
for _, given := range []string{
"Survivor.AU.S12E11.1080p.HEVC.x265-MeGusta[EZTVx.to].mkv",
"Survivor.AU.S12E11.720p.HEVC.x265-MeGusta[EZTVx.to].mkv",
"Survivor.AU.S12E12.720p.HEVC.x265-MeGusta[EZTVx.to].mkv",
} {
ioutil.WriteFile(path.Join(ind, given), []byte{}, os.ModePerm)
}
want := map[string]bool{
"Australian_Survivor_S12E11.mkv": false,
"Australian_Survivor_S12E12.mkv": false,
}
if err := main.Run(context.Background(),
outd,
ind,
[]string{
".urvivor.[Aa][Uu].*[sS](?P<season>[0-9]+)[eE](?P<episode>[0-9]*).*1080.*MeGusta",
".urvivor.[Aa][Uu].*[sS](?P<season>[0-9]+)[eE](?P<episode>[0-9]*).*720.*MeGusta",
},
main.Fields{
Title: "Australian_Survivor",
},
func(outf, inf string) error {
want[path.Base(outf)] = true
return nil
},
); err != nil {
t.Fatal(err)
}
for k, v := range want {
if !v {
t.Errorf("did not mv_n_ln(outf=%s)", k)
}
}
}
func TestRun(t *testing.T) { func TestRun(t *testing.T) {
cases := map[string]struct { cases := map[string]struct {
given []string given []string