67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
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!")
|
|
}
|