UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

91 lines (90 loc) 4.53 kB
'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 endpoints_1 = require("../../endpoints"); const iac_1 = __importDefault(require("../../endpoints/lib/iac")); const index_js_1 = __importDefault(require("../../error/index.js")); const command_1 = __importDefault(require("../../internal/command")); const prompt_1 = __importDefault(require("../../prompt")); const runtime_store_1 = __importDefault(require("../../runtime-store")); const constants_1 = require("../../util_modules/constants"); const scopes_js_1 = __importDefault(require("../../authentication/constants/scopes.js")); const env_1 = require("../../util_modules/env"); const index_1 = require("../../util_modules/logger/index"); const option_1 = require("../../util_modules/option"); const project_1 = require("../../util_modules/project"); const shell_1 = require("../../util_modules/shell"); const getExportProjectId = () => __awaiter(void 0, void 0, void 0, function* () { const projectId = (0, project_1.getProjectId)(null); if (projectId !== null) { return projectId; } const allProjects = (yield (yield (0, endpoints_1.projectAPI)()).getAllProjects()); if (allProjects.length === 0) { throw new index_js_1.default('No projects found', { exit: 0, errorId: 'PROJ-USE-1' }); } if (allProjects.length === 1) { (0, index_1.message)('only one project found in remote, using that'); return allProjects[0].id; } const projectAns = yield prompt_1.default.ask(prompt_1.default.question('project', 'Which project do you wish to export ? ', { type: 'list', choices: allProjects.map((project) => { return prompt_1.default.choice(project.project_name, { value: project.id, short: project.project_name }); }) })); return projectAns.project; }); exports.default = new command_1.default('iac:export') .description('Create a zip file out of existing project in console') .option('--production', 'flag for pointing to production environment') .needs('auth', [scopes_js_1.default.project_export_read, scopes_js_1.default.project_export_create]) .needs('config', { optional: true }) .needs('rc', { optional: true, skipOrgCheck: false }) .action(() => __awaiter(void 0, void 0, void 0, function* () { const env = (0, option_1.getOptionValue)('production', false) ? 'Production' : 'Development'; const projectId = yield getExportProjectId(); const bundleResp = yield new iac_1.default(projectId, { env }).bundle(constants_1.IAC.template_format.json); (0, index_1.info)(); (0, index_1.success)(`Successfully scheduled export job for project "${(0, project_1.getProjectName)(projectId)}" with jobid "${bundleResp.id}"`); if ((0, env_1.isPrimaryShell)()) { const exitListeners = process.listeners('exit'); process.removeAllListeners('exit'); const allGlobalOpts = runtime_store_1.default.get('context.opts.globalOpts', {}); const optsArr = Object.keys(allGlobalOpts).reduce((arr, key) => { arr.push('--' + key); if (allGlobalOpts[key]) { arr.push(allGlobalOpts[key]); } return arr; }, [ '--org', (0, project_1.getEnvId)(), ...(env === 'Production' ? ['--production'] : []) ]); (0, shell_1.spawn)('catalyst', ['iac:status', 'export', ...optsArr], { shell: true, stdio: 'inherit' }).SYNC(); (exitListeners || []).forEach((listner) => { process.addListener('exit', listner); }); } }));