printer-notifications/node_modules/sorcery/bin/sorcery
2023-11-13 16:10:04 -05:00

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;
});
});
}