Adds function to process files that are on the compilation path
This commit is contained in:
parent
d6451cf86f
commit
dc1ded5433
@ -13,3 +13,50 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package compiler
|
package compiler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
log "github.com/Sirupsen/logrus"
|
||||||
|
"github.com/jjdekker/ponder/helpers"
|
||||||
|
"github.com/jjdekker/ponder/settings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// compilePath calls the given function on all files that aren't in any
|
||||||
|
// of the ignored directories
|
||||||
|
func compilePath(root string, opts *settings.Settings,
|
||||||
|
f func(string, os.FileInfo) error) filepath.WalkFunc {
|
||||||
|
return func(path string, info os.FileInfo, err error) error {
|
||||||
|
// Handle walking error
|
||||||
|
if err != nil {
|
||||||
|
log.withFields(log.Fields{
|
||||||
|
"error": err,
|
||||||
|
"path": path,
|
||||||
|
}).Warning("error occurred transversing project path")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if info.IsDir() {
|
||||||
|
// Skip directories that are ignored
|
||||||
|
relPath, err = filepath.Rel(root, path)
|
||||||
|
helpers.Check(err, "Unable to create relative Path")
|
||||||
|
for dir := range append(append(opts.IgnoreDirs, opts.LilypondIncludes), []string{opts.OutputDir}) {
|
||||||
|
if relPath == dir || (filepath.IsAbs(dir) && path == dir) {
|
||||||
|
log.WithFields(log.Fields{"path": path}).Info("Ignoring directory")
|
||||||
|
return filepath.SkipDir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Call function on non-directory
|
||||||
|
err = f(path, info)
|
||||||
|
if err != nil {
|
||||||
|
log.WithFields(log.Fields{
|
||||||
|
"error": err,
|
||||||
|
"path": path,
|
||||||
|
}).Error("error occured processing files")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user