gia-cli
Version:
Guardian US Interactive CLI tool
31 lines (26 loc) • 963 B
JavaScript
/*global require, module */
var path = require( 'path' );
var sander = require( 'sander' );
var Promise = sander.Promise;
var textFiles = [ '.js', '.css', '.scss', '.html', '.md', '.json' ];
module.exports = function ( root, dest, processor, renamer ) {
return sander.lsr( root ).then( function ( files ) {
var binaryFilePromises = files
.filter( function ( file ) {
return !~textFiles.indexOf( path.extname( file ) );
})
.map( function ( file ) {
return sander.copyFile( root, file ).to( dest, renamer( file ) );
});
var textFilePromises = files
.filter( function ( file ) {
return ~textFiles.indexOf( path.extname( file ) );
})
.map( function ( file ) {
return sander.readFile( root, file ).then( String ).then( processor ).then( function ( processed ) {
return sander.writeFile( dest, renamer( file ), processed );
});
});
return Promise.all( binaryFilePromises.concat( textFilePromises ) );
});
};