UNPKG

savant-cli

Version:
62 lines (55 loc) 1.66 kB
'use strict'; var Client = require('../client') , utils = require('../utils') , async = require('async') , path = require('path') , fs = require('fs') , mkdirp = require('mkdirp') , 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(); Client.getClient(function(err, cli) { if (err) return done(err); function _pull(tree, cb) { if (tree.files) { async.each(tree.files, _pull, cb); } else { var file = path.join(dir, 'site', tree.relPath) , parent = path.dirname(file); mkdirp(parent, function(err) { if (err) return cb(err); var request = cli.request('get', 'site/file/' + tree.relPath); request({ encoding: null }, function(err, res, body) { 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(); } fs.writeFile(file, body, function(err) { if (err) return cb(err); console.log('%s %s', colors.green('✔'), tree.relPath); cb(); }); }); }); } } cli.get('/site', {}, function(err, res, body) { if (err) return done(err); if (res.statusCode != 200) return done(new Error(body.error)); _pull(body, done); }); }); };