diff --git a/cmd/rmdir/main.go b/cmd/rmdir/main.go new file mode 100644 index 0000000..d919a6b --- /dev/null +++ b/cmd/rmdir/main.go @@ -0,0 +1,54 @@ +package main + +import ( + "context" + "fmt" + "log" + "os" + "os/signal" + "syscall" + + "ffmpeg.d/pkg/fs" +) + +func main() { + ctx, can := signal.NotifyContext(context.Background(), syscall.SIGINT) + defer can() + + if err := Run(ctx, os.Args[1:]); err != nil { + panic(err) + } +} + +func Run(ctx context.Context, args []string) error { + cams, err := lsd(args[0]) + if err != nil { + return fmt.Errorf("failed to lsd %s: %w", args[0], err) + } + + for _, cam := range cams { + files, err := lsf(cam) + if err != nil { + return fmt.Errorf("failed to lsf %s: %w", cam, err) + } else if len(files) < 1 { + continue + } + + for _, file := range files { + log.Println("rm", file) + if os.Getenv("DRY_RUN") == "false" { + os.Remove(file) + } + } + } + + return nil +} + +func lsd(d string) ([]string, error) { + return fs.LsD(d) +} + +func lsf(d string) ([]string, error) { + return fs.LsF(d) +}