ryuu
Version:
Domo App Dev Studio CLI, The main tool used to create, edit, and publish app designs to Domo
74 lines • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs-extra");
var path = require("path");
var extract = require("extract-zip");
var inquirer = require("inquirer");
var shell = require("shelljs");
var login_1 = require("../util/login");
var log_1 = require("../util/log");
module.exports = function (program) {
program
.command('download')
.description('download a Custom App design')
.option('-i, --design-id <id>', 'design id')
.option('-d, --design-version <design-version>', 'design version')
.action(function (args) {
new login_1.Login()
.getClient()
.then(function (client) {
var prompts = [];
if (!args.designId) {
prompts.push({
type: 'input',
message: 'design id',
name: 'designId',
});
}
if (!args.designVersion) {
prompts.push({
type: 'input',
message: 'version',
name: 'version',
default: 'latest',
});
}
inquirer.prompt(prompts).then(function (answers) {
var designId = args.designId || answers.designId;
var version = args.designVersion || answers.version;
client
.download(designId, version)
.then(function (req) {
if (req.status === 200) {
var regexp = /filename="(.*)"/;
var name_1 = req.headers['content-disposition'].match(regexp)[1] ||
'domoapp';
var writeStream = fs.createWriteStream('./' + name_1 + '.zip', {
flags: 'w+',
mode: 438,
});
//@ts-ignore
req.data.pipe(writeStream);
writeStream.on('finish', function () {
var source = path.resolve('./' + name_1 + '.zip');
var target = path.resolve('./' + name_1);
extract(source, { dir: target }).catch(function () {
shell.chmod('-R', 'u+w', target);
fs.remove(source);
log_1.log.fail('Extraction of design from its compressed zip file failed, removing downloaded zip.');
});
});
}
else {
log_1.log.fail('Design not found. Make sure you have the correct design id.');
}
})
.catch(function (e) {
return log_1.log.clientRequestFailed('Unable to download design ' + designId);
});
});
})
.catch(log_1.log.notAuthenticated);
});
};
//# sourceMappingURL=download.js.map