zcatalyst-cli
Version:
Command Line Tool for CATALYST
80 lines (79 loc) • 3.83 kB
JavaScript
'use strict';
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ansi_colors_1 = require("ansi-colors");
const archiver_1 = __importDefault(require("../../archiver"));
const client_utils_1 = require("../../client-utils");
const endpoints_1 = require("../../endpoints");
const error_1 = __importDefault(require("../../error"));
const prompt_1 = __importDefault(require("../../prompt"));
const runtime_store_1 = __importDefault(require("../../runtime-store"));
const config_1 = require("../../util_modules/config");
const fs_1 = require("../../util_modules/fs");
const js_1 = require("../../util_modules/js");
const logger_1 = require("../../util_modules/logger");
const project_1 = require("../../util_modules/project");
exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
const clientDirName = config_1.clientConfig.source();
const clientDirPath = (0, project_1.resolveProjectPath)(clientDirName);
const webappAPI = yield (0, endpoints_1.clientAPI)();
const historyArr = (yield webappAPI.getAllHistory());
if (historyArr.length === 0) {
(0, logger_1.info)('No history details found in remote console');
return;
}
const folderExits = yield fs_1.ASYNC.dirExists(clientDirPath);
const overwriteAns = folderExits
? yield prompt_1.default.ask(prompt_1.default.question('overwrite', 'Directory ' + (0, ansi_colors_1.underline)(clientDirName) + ' already exists. Overwrite ?', {
type: 'confirm',
defaultAns: false
}))
: { overwrite: true };
if (!overwriteAns.overwrite) {
(0, logger_1.info)('Skipping client pull');
return;
}
yield fs_1.ASYNC.deleteDir(clientDirPath).catch();
const choices = historyArr.map((history) => {
let live = '';
if (js_1.JS.get(history, 'status', false)) {
live = (0, ansi_colors_1.cyan)(' (LIVE)');
}
return prompt_1.default.choice(history.app_version + live, {
value: history.history_id,
short: history.app_version
});
});
const historyAns = yield prompt_1.default.ask(prompt_1.default.question('history', 'Select a Catalyst client app version : ', {
type: 'list',
choices
}));
try {
const clientZip = (yield webappAPI.download(historyAns.history));
yield new archiver_1.default().load(clientZip).extract(clientDirPath).finalize();
yield client_utils_1.clientUtils.validate();
}
catch (err) {
runtime_store_1.default.set('payload.client.status', 1);
if (err instanceof error_1.default) {
throw new error_1.default(err.message, {
exit: err.exit,
errorId: err.errorId
});
}
throw err;
}
runtime_store_1.default.set('payload.client', runtime_store_1.default.get('context.client'));
runtime_store_1.default.set('payload.client.source', (0, project_1.resolveProjectPath)(clientDirName));
});