savant-cli
Version:
Savant Solutions API client
53 lines (47 loc) • 1.37 kB
JavaScript
;
var Client = require('../client')
, utils = require('../utils')
, async = require('async')
, path = require('path')
, fs = require('fs')
, colors = require('cli-color');
function done(err) {
if (err) {
console.error(err);
process.exit(1);
}
process.exit(0);
}
module.exports = exports = function(opts) {
var dir = process.cwd()
, siteRoot = path.join(dir, 'site');
Client.getClient(function(err, cli) {
if (err) return done(err);
function _push(tree, cb) {
if (tree.files) {
async.each(tree.files, _push, cb);
} else {
var file = path.join(siteRoot, tree.relPath)
, request = cli.request('post', '/site/file/' + tree.relPath);
var r = request({}, function(err, res) {
if (err) return cb(err);
if (res.statusCode != 200) {
// Report failure and skip
console.error('%s %s %s',
colors.red('✘'),
tree.relPath,
colors.blackBright(res.statusCode));
return cb();
}
console.log('%s %s', colors.green('✔'), tree.relPath);
});
var form = r.form();
form.append('file', fs.createReadStream(file));
}
}
utils.ls(siteRoot, function(err, tree) {
if (err) return done(err);
_push(tree, done);
});
});
};