fs.list take option for files to ignores

This commit is contained in:
Samy Pessé
2015-01-26 21:59:55 +01:00
parent 4250f559b0
commit 5cee07ee8c
2 changed files with 37 additions and 26 deletions
+25 -1
View File
@@ -549,7 +549,31 @@ Book.prototype.statFile = function(filename) {
Book.prototype.listAllFiles = function() {
var that = this;
return fs.list(this.root)
return fs.list(this.root, {
ignoreFiles: ['.ignore', '.gitignore', '.bookignore'],
ignoreRules: [
// Skip Git stuff
'.git/',
'.gitignore',
// Skip OS X meta data
'.DS_Store',
// Skip stuff installed by plugins
'node_modules',
// Skip book outputs
'_book',
'*.pdf',
'*.epub',
'*.mobi',
// Skip config files
'.ignore',
'.bookignore',
'book.json',
]
})
.then(function(_files) {
that.files = _files;
});
+12 -25
View File
@@ -1,10 +1,16 @@
var _ = require("lodash");
var Q = require("q");
var tmp = require("tmp");
var fs = require("graceful-fs");
var fsExtra = require("fs-extra");
var Ignore = require("fstream-ignore");
var getFiles = function(path) {
var listFiles = function(path, options) {
options = _.defaults(options || {}, {
ignoreFiles: [],
ignoreRules: []
});
var d = Q.defer();
// Our list of files
@@ -12,32 +18,11 @@ var getFiles = function(path) {
var ig = Ignore({
path: path,
ignoreFiles: ['.ignore', '.gitignore', '.bookignore']
ignoreFiles: options.ignoreFiles
});
// Add extra rules to ignore common folders
ig.addIgnoreRules([
// Skip Git stuff
'.git/',
'.gitignore',
// Skip OS X meta data
'.DS_Store',
// Skip stuff installed by plugins
'node_modules',
// Skip book outputs
'_book',
'*.pdf',
'*.epub',
'*.mobi',
// Skip config files
'.ignore',
'.bookignore',
'book.json',
], '__custom_stuff');
ig.addIgnoreRules(options.ignoreRules, '__custom_stuff');
// Push each file to our list
ig.on('child', function (c) {
@@ -63,6 +48,8 @@ var getFiles = function(path) {
return d.promise;
};
module.exports = {
tmp: {
file: function() {
@@ -72,7 +59,7 @@ module.exports = {
return Q.nfcall(tmp.dir.bind(tmp)).get(0)
}
},
list: getFiles,
list: listFiles,
stat: Q.denodeify(fs.stat),
readdir: Q.denodeify(fs.readdir),
readFile: Q.denodeify(fs.readFile),