daruk-cli
Version:
init Daruk repository with template
27 lines (24 loc) • 603 B
JavaScript
const match = require('minimatch')
const evaluate = require('./eval')
module.exports = (filters) => {
return (files, metalsmith, done) => {
filter(files, filters, metalsmith.metadata(), done)
}
}
function filter (files, filters, data, done) {
if (!filters) {
return done()
}
const fileNames = Object.keys(files)
Object.keys(filters).forEach(glob => {
fileNames.forEach(file => {
if (match(file, glob, { dot: true })) {
const condition = filters[glob]
if (!evaluate(condition, data)) {
delete files[file]
}
}
})
})
done()
}