From 0359f8c2885f542dfc2fc5ca5b890758c1ac4953 Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Sun, 23 Jul 2017 14:07:12 -0700 Subject: [PATCH] added meta subcommand this command parses and prints out the metadata. Also I've used an alternate spelling of "go wide" that I've been finding slightly more legible these days. --- cmd/am/main.go | 10 +++++++++- cmd/am/meta.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 cmd/am/meta.go diff --git a/cmd/am/main.go b/cmd/am/main.go index 431d8b0..855e0c9 100644 --- a/cmd/am/main.go +++ b/cmd/am/main.go @@ -7,9 +7,10 @@ import ( "os" ) -const usage = "am [flags]" +const usage = "am [flags]" const arrUsage = "am arr [-h|-cores=N] " const cleanUsage = "am clean [-h|-cores=N] " +const metaUsage = "am meta [-h|-cores=N] ... " type stats struct { total int @@ -53,6 +54,13 @@ func main() { fmt.Fprintf(os.Stderr, "problem cleaning: %v\n", err) os.Exit(1) } + case "m", "meta": + args := flag.Args() + if len(args) < 1 { + fmt.Fprintf(os.Stderr, "%s\n", metaUsage) + os.Exit(1) + } + meta(args) default: fmt.Fprintf(os.Stderr, "%s\n", usage) os.Exit(1) diff --git a/cmd/am/meta.go b/cmd/am/meta.go new file mode 100644 index 0000000..54d6d12 --- /dev/null +++ b/cmd/am/meta.go @@ -0,0 +1,42 @@ +package main + +import ( + "fmt" + "log" + "runtime" + "sync" + + "mcquay.me/arrange" +) + +func meta(files []string) { + workers := runtime.NumCPU() + if *cores != 0 { + workers = *cores + } + fc := make(chan arrange.Media) + + go func() { + wg := &sync.WaitGroup{} + s := make(chan bool, workers) + for _, f := range files { + wg.Add(1) + go func(pth string) { + s <- true + pf, err := arrange.ParseFile(pth) + if err != nil { + log.Printf("%+v", err) + } + + fc <- pf + <-s + wg.Done() + }(f) + } + wg.Wait() + close(fc) + }() + for f := range fc { + fmt.Printf("%+v: %v\n", f.Time, f.Path) + } +}