divshot-cli
Version:
CLI for Divshot
50 lines (38 loc) • 1.33 kB
JavaScript
var path = require('path');
var spawn = require('child_process').spawn;
module.exports = function (cli) {
var command = cli.command('server <optional directory>', 's <optional directory>');
command.description('start server for local development');
command.handler(function (customDir, done) {
var dirname = __dirname;
// Avoid spaces in dir path on Windows
if (isWindows()) {
dirname = dirname.replace(' ', '^ ');
}
var cmd = path.resolve(dirname, '../../node_modules/.bin/superstatic');
var server;
// On Windows, spawn has to delegate its work to cmd to avoid ENOENT error.
if (isWindows()) {
server = spawn('cmd', ['/s','/c', cmd, process.argv.splice(3)], {
windowsVerbatimArguments: true
});
}
else {
server = spawn(cmd , process.argv.splice(3));
}
server.stdout.pipe(process.stdout);
server.stderr.on('data', function (data) {
done(cli.errors.SERVER_ERROR);
});
server.on('close', function () {
done();
});
server.on('error', function (err) {
console.error(err.message);
console.error(err.stack);
});
});
};
function isWindows () {
return process && process.env && process.env.OS && process.env.OS.toLowerCase().indexOf('windows') >= 0;
}