UNPKG

o3-panther-cli

Version:
61 lines (58 loc) 1.98 kB
const req = require('request-promise').defaults({ jar: true }); const jszip = require('jszip'); const path = require('path'); const fs = require('fs'); const cnf = require(path.resolve(process.cwd(), 'o3.json')); const zip = new jszip(); const 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); let norm = p.replace(/\\/g, '/'); zip.file(norm, fs.readFileSync(filepath, 'binary'), { binary: true }); } }; module.exports = () => { console.log('adding files'); addFile(cnf.local.www, cnf.local.www.length + 1); console.log('compressing files'); zip.generateAsync({ type: 'nodebuffer', compression: "DEFLATE", compressionOptions: { level: 9 }, streamFiles: true }).then(function (content) { let url = (cnf.remote.https ? 'https://' : 'http://') + cnf.remote.domain + cnf.remote.uri_update; console.log('uploading files to:', url); fs.writeFileSync('panther_deployment.zip', content); var opt = { method: 'POST', uri: url, 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); }); }); }