o3-panther-cli
Version:
Panther CLI for developing and editing sites.
59 lines (55 loc) • 1.68 kB
JavaScript
var args = require('minimist')(process.argv.slice(2));
var req = require('request-promise');
var jszip = require('jszip');
var path = require('path');
var fs = require('fs');
var zip = new jszip();
var root = path.resolve(args._[0]);
var host = 'Panther';
function addFile(filepath, cut) {
var p = filepath.substr(cut);
if (fs.lstatSync(filepath).isDirectory()) {
if (p != '') {
console.log("Archiving Folder:", filepath);
zip.folder(p);
}
var directory = fs.readdirSync(filepath);
directory.forEach(function (subfilepath) {
addFile(path.join(filepath, subfilepath), cut);
});
} else {
console.log("Archiving File:", filepath)
zip.file(p, fs.readFileSync(filepath, 'binary'), { binary: true });
}
};
addFile(root, root.length + 1);
console.log('compressing files');
zip.generateAsync({
type: 'nodebuffer',
compression: "DEFLATE",
compressionOptions: {
level: 9
},
streamFiles: true
}).then(function (content) {
console.log('sending files');
fs.writeFileSync('panther_deployment.zip', content);
var opt = {
method: 'POST',
uri: 'http://panther-dev.origami3.com:8080/api/deploy/www/' + host,
formData: {
file: {
value: fs.createReadStream('panther_deployment.zip'),
options: {
filename: 'deploy.zip',
contentType: 'application/zip'
}
}
}
}
return req(opt).then(function (body) {
console.log(body);
}).catch(function (err) {
console.log(err.message);
});
});