arrange/cmd/am/arrange.go

48 lines
830 B
Go

package main
import (
"fmt"
"log"
"runtime"
"mcquay.me/arrange"
)
func arr(indir, outdir string) error {
if err := arrange.PrepOutput(outdir); err != nil {
return fmt.Errorf("problem creating directory structure: %v", err)
}
work := arrange.Source(indir)
streams := []<-chan arrange.Media{}
workers := runtime.NumCPU()
if *cores != 0 {
workers = *cores
}
for w := 0; w < workers; w++ {
streams = append(streams, arrange.Parse(work))
}
st := stats{}
for err := range arrange.Move(arrange.Merge(streams), outdir) {
st.total++
if err != nil {
switch err.(type) {
case arrange.Dup:
st.dupes++
default:
log.Printf("%+v", err)
}
} else {
st.moved++
}
}
log.Printf("dupes: %+v", st.dupes)
log.Printf("moved: %+v", st.moved)
log.Printf("total: %+v", st.total)
return nil
}