package main import ( "fmt" "os" "codeberg.org/danjones000/utils/chill" c "codeberg.org/danjones000/utils/cli/context" e "codeberg.org/danjones000/utils/cli/err" "codeberg.org/danjones000/utils/cli/spin" "codeberg.org/danjones000/utils/convids" "github.com/spf13/pflag" ) const dataPath = "shows.yml" func main() { loop := pflag.BoolP("loop", "l", false, "Loop") help := pflag.BoolP("help", "h", false, "Get Help") dryRun := pflag.BoolP("dry-run", "d", false, "Do a dry run") pflag.Parse() if *help { pflag.Usage() os.Exit(2) } ctx, done := c.SelfCancelingContextFromBackground() defer done() var walker convids.ShowWalker if *dryRun { *loop = false walker = convids.DryRun(os.Stdout) } else { gs := convids.GetShow(ctx) walker = func(s *convids.Show, path string) error { ct := chill.Chill(ctx) msg := fmt.Sprintf("Waiting for CPU to cool, for %s", path) sp := spin.Spin(ct, msg) err := sp.Wait() if err != nil { return err } return gs(s, path) } } data, err := convids.NewData(dataPath) e.HandleErr(err) groupPrinter := convids.PrintGroupName(os.Stdout) if *loop { fmt.Println("looping") for err == nil { err = convids.WalkFiles(data, false, groupPrinter, walker) fmt.Println(err) } } else { err = convids.WalkFiles(data, false, groupPrinter, walker) } e.HandleErr(err) fmt.Println("Done!") }