UNPKG

esa-cli

Version:

A CLI for operating Alibaba Cloud ESA EdgeRoutine (Edge Functions).

114 lines (113 loc) 5.28 kB
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()); }); }; import SelectItems from '../../components/selectInput.js'; import { yesNoPrompt } from '../../components/yesNoPrompt.js'; import { PublishType } from '../../libs/interface.js'; import { ApiService } from '../../libs/apiService.js'; import { descriptionInput } from '../../components/descriptionInput.js'; import { readEdgeRoutineFile } from '../../utils/fileUtils/index.js'; import { displaySelectSpec } from './index.js'; import { createEdgeRoutine, releaseOfficialVersion, uploadEdgeRoutineCode } from '../commit/index.js'; import logger from '../../libs/logger.js'; import t from '../../i18n/index.js'; import prodBuild from '../commit/prodBuild.js'; export function yesNoPromptAndExecute(message, execute) { return new Promise((resolve) => { yesNoPrompt((item) => __awaiter(this, void 0, void 0, function* () { if (item.value === 'yes') { const result = yield execute(); resolve(result); } else { resolve(false); } }), message); }); } export function promptSelectVersion(versionList) { const items = versionList .filter((version) => version.CodeVersion !== 'unstable') .map((version, index) => ({ label: version.CodeVersion, value: String(index) })); return new Promise((resolve) => { const handleSelection = (item) => __awaiter(this, void 0, void 0, function* () { resolve(item.label); }); SelectItems({ items, handleSelect: handleSelection }); }); } export function displaySelectDeployType() { logger.log(`📃 ${t('deploy_env_select_description').d('Please select which environment you want to deploy')}`); const selectItems = [ { label: t('deploy_env_staging').d('Staging'), value: PublishType.Staging }, { label: t('deploy_env_production').d('Production'), value: PublishType.Production }, { label: t('deploy_env_canary').d('Canary'), value: PublishType.Canary } ]; return new Promise((resolve) => { const handleSelection = (item) => __awaiter(this, void 0, void 0, function* () { resolve(item.value); }); SelectItems({ items: selectItems, handleSelect: handleSelection }); }); } export function createAndDeployVersion(projectConfig_1) { return __awaiter(this, arguments, void 0, function* (projectConfig, createUnstable = false, customEntry) { var _a, _b, _c, _d; try { const server = yield ApiService.getInstance(); const description = yield descriptionInput(createUnstable ? `🖊️ ${t('deploy_description_routine').d('Enter the description of the routine')}:` : `🖊️ ${t('deploy_description_version').d('Enter the description of the code version')}:`, false); yield prodBuild(false, customEntry); const code = readEdgeRoutineFile(); const specList = ((_b = (_a = (yield server.ListRoutineOptionalSpecs())) === null || _a === void 0 ? void 0 : _a.data.Specs) !== null && _b !== void 0 ? _b : []).reduce((acc, item) => { if (item.IsAvailable) { acc.push(item.SpecName); } return acc; }, []); let specName; if (createUnstable) { specName = yield displaySelectSpec(specList); } else { const req = { Name: (_c = projectConfig.name) !== null && _c !== void 0 ? _c : '' }; const response = yield server.getRoutine(req); specName = (_d = response === null || response === void 0 ? void 0 : response.data.Envs[0].SpecName) !== null && _d !== void 0 ? _d : '50ms'; } const edgeRoutine = { name: projectConfig.name, code: code || '', description: description, specName: specName }; if (createUnstable) { return yield createEdgeRoutine(edgeRoutine); } else { const uploadResult = yield uploadEdgeRoutineCode(edgeRoutine); if (!uploadResult) { return false; } return yield releaseOfficialVersion(edgeRoutine); } } catch (error) { logger.error(` ${t('deploy_error').d('An error occurred during the creation or publishing process')}: ${error}`); return false; } }); }