From 2fcc9e8488e7ff89fb7977f14293d1d4367e8866 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Sat, 19 Mar 2016 17:05:12 +0100 Subject: [PATCH] Adds function to generate score collector --- compiler/compile.go | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/compiler/compile.go b/compiler/compile.go index 59a1ad6..2cdf308 100644 --- a/compiler/compile.go +++ b/compiler/compile.go @@ -14,10 +14,43 @@ package compiler -import "github.com/jjdekker/ponder/settings" +import ( + "os" + "path/filepath" + + log "github.com/Sirupsen/logrus" + "github.com/jjdekker/ponder/settings" +) // CompileDir compiles all lilypond files and makes all // sheet music available in the OutputDir func CompileDir(path string, opts *settings.Settings) { } + +func generateScores() ([]*settings.Score, func(string, os.FileInfo) error) { + scores := make([]*settings.Score) + return scores, func(path string, file os.FileInfo) error { + switch filepath.Ext(path) { + case ".ly": + log.WithFields(log.Fields{"path": path}).Info("adding lilypond file") + append(scores, &settings.Score{Path: path}) + + case ".json": + if filepath.Base(path) != "ponder.json" { + log.WithFields(log.Fields{"path": path}).Info("adding json file") + if score, err := fromJSON(path); err != nil { + log.WithFields(log.Fields{ + "error": err, + "path": path, + }).Warning("unable to parse score settings, skipping...") + } else { + append(scores, score) + } + } + + default: + log.WithFields(log.Fields{"path": path}).Debug("ignoring file") + } + } +}