75 lines
1.8 KiB
JavaScript
Executable File
75 lines
1.8 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
var path = require( 'path' );
|
|
var minimist = require( 'minimist' );
|
|
var sander = require( 'sander' );
|
|
var showHelp = require( './showHelp' );
|
|
var command;
|
|
var sorcery = require( '../' );
|
|
|
|
var validExtensions = { js: true };
|
|
|
|
command = minimist( process.argv.slice( 2 ), {
|
|
alias: {
|
|
i: 'input',
|
|
o: 'output',
|
|
v: 'version',
|
|
h: 'help',
|
|
d: 'datauri',
|
|
x: 'excludeContent'
|
|
}
|
|
});
|
|
|
|
if ( command.help ) {
|
|
showHelp( process.stdout );
|
|
}
|
|
|
|
else if ( process.argv.length <= 2 && process.stdin.isTTY ) {
|
|
showHelp( process.stderr );
|
|
}
|
|
|
|
else if ( command.version ) {
|
|
console.log( 'Sorcery version ' + require( '../package.json' ).version );
|
|
}
|
|
|
|
else if ( !command.input ) {
|
|
console.error( 'Error: You must supply an --input (-i) argument. Type sorcery --help for more info' );
|
|
}
|
|
|
|
else {
|
|
sander.stat( command.input ).then( function ( stats ) {
|
|
if ( stats.isDirectory() ) {
|
|
return sander.lsr( command.input ).then( function ( files ) {
|
|
files = files.filter( function ( file ) {
|
|
return validExtensions[ path.extname( file ).slice( 1 ) ];
|
|
});
|
|
|
|
return files.reduce( function ( promise, file ) {
|
|
return promise.then( function () {
|
|
var input = path.join( command.input, file );
|
|
var output = path.join( command.output || command.input, file );
|
|
|
|
return sorcery.load( input ).then( function ( chain ) {
|
|
return chain.write( output, {
|
|
inline: command.datauri,
|
|
includeContent: !command.excludeContent
|
|
});
|
|
});
|
|
});
|
|
}, Promise.resolve() );
|
|
});
|
|
}
|
|
|
|
return sorcery.load( command.input ).then( function ( chain ) {
|
|
return chain.write( command.output || command.input, {
|
|
inline: command.datauri,
|
|
includeContent: !command.excludeContent
|
|
});
|
|
});
|
|
}).catch( function ( err ) {
|
|
setTimeout( function () {
|
|
throw err;
|
|
});
|
|
});
|
|
}
|