♻️ Better names and add printing methods
This commit is contained in:
parent
f41ac8575f
commit
d5e7f601b6
4 changed files with 41 additions and 17 deletions
|
|
@ -1,6 +1,8 @@
|
|||
package convids
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
fp "path/filepath"
|
||||
"regexp"
|
||||
|
|
@ -28,17 +30,23 @@ func ensureExtRe(c *Config) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func WalkFiles(d *Data, stopOnError, silent bool, cb func(s *Show, path string) error) (err error) {
|
||||
type ShowWalker func(show *Show, path string) error
|
||||
type GroupPrinter func(name string, group Shows)
|
||||
|
||||
func WalkFiles(d *Data, stopOnError bool, gp GroupPrinter, cb ShowWalker) (err error) {
|
||||
err = ensureExtRe(d.Config)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if cb == nil {
|
||||
cb = DryRun(os.Stdout)
|
||||
}
|
||||
var files []os.DirEntry
|
||||
files, err = os.ReadDir(d.Config.Source)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for s := range d.AllShows(silent) {
|
||||
for s := range d.AllShows(gp) {
|
||||
var found bool
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
|
|
@ -62,3 +70,16 @@ func WalkFiles(d *Data, stopOnError, silent bool, cb func(s *Show, path string)
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func DryRun(out io.Writer) ShowWalker {
|
||||
return func(s *Show, path string) error {
|
||||
fmt.Fprintf(out, "Saving %s to %s\n", path, s.Folder)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func PrintGroupName(out io.Writer) GroupPrinter {
|
||||
return func(name string, group Shows) {
|
||||
fmt.Fprintf(out, "Checking %s shows\n\n", name)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package convids
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"iter"
|
||||
"regexp"
|
||||
"slices"
|
||||
|
|
@ -57,24 +56,24 @@ func (ss *Shows) All() iter.Seq[*Show] {
|
|||
return slices.Values(*ss)
|
||||
}
|
||||
|
||||
func (d *Data) AllShows(silent bool) iter.Seq[*Show] {
|
||||
func (d *Data) AllShows(outputGroup GroupPrinter) iter.Seq[*Show] {
|
||||
return func(yield func(*Show) bool) {
|
||||
if d == nil || d.Config == nil {
|
||||
return
|
||||
}
|
||||
for _, show := range d.Config.Shows {
|
||||
sh := (*d.Shows)[show]
|
||||
if sh == nil || len(*sh) < 1 {
|
||||
for _, groupName := range d.Config.Groups {
|
||||
group := (*d.Shows)[groupName]
|
||||
if group == nil || len(*group) < 1 {
|
||||
continue
|
||||
}
|
||||
if !silent {
|
||||
fmt.Printf("Checking %s shows\n\n", show)
|
||||
if outputGroup != nil {
|
||||
outputGroup(groupName, *group)
|
||||
}
|
||||
for s := range sh.All() {
|
||||
if s == nil {
|
||||
for sh := range group.All() {
|
||||
if sh == nil {
|
||||
continue
|
||||
}
|
||||
if !yield(s) {
|
||||
if !yield(sh) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ type Data struct {
|
|||
type Config struct {
|
||||
Source string
|
||||
Extensions []string
|
||||
Shows []string
|
||||
Groups []string
|
||||
|
||||
extRe *regexp.Regexp
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue