UNPKG

@erda-ui/cli

Version:

Command line interface for rapid Erda UI development

143 lines (142 loc) 5.93 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 }); exports.ALL_MODULES = exports.defaultEnterpriseRegistry = exports.defaultRegistry = exports.registryDir = exports.killPidTree = exports.getSchedulerDir = exports.getPublicDir = exports.getShellDir = exports.getCoreDir = exports.getCliDir = exports.clearPublic = exports.getModuleList = exports.getEnvConfig = exports.getCwdModuleName = exports.isCwdInRoot = exports.checkIsRoot = void 0; const path_1 = require("path"); const fs_1 = __importDefault(require("fs")); const rimraf_1 = __importDefault(require("rimraf")); const process_1 = require("process"); const log_1 = require("./log"); const dotenv_1 = __importDefault(require("dotenv")); const pidtree_1 = __importDefault(require("pidtree")); const checkIsRoot = () => { if (!fs_1.default.existsSync(`${process.cwd()}/.env`)) { (0, log_1.logError)('Please run this command under erda-ui root directory'); (0, process_1.exit)(1); } }; exports.checkIsRoot = checkIsRoot; const isCwdInRoot = (params) => { const currentDir = (params === null || params === void 0 ? void 0 : params.currentPath) || process.cwd(); let isInRoot = true; if (!fs_1.default.existsSync((0, path_1.join)(currentDir, 'package.json'))) { isInRoot = false; } else { const pkg = fs_1.default.readFileSync((0, path_1.join)(currentDir, 'package.json'), 'utf8'); const { name } = JSON.parse(pkg); if (params === null || params === void 0 ? void 0 : params.isEnterprise) { if (name !== '@erda-ui/enterprise-ui') { isInRoot = false; } } else if (name !== 'erda-ui') { isInRoot = false; } } if (!isInRoot && (params === null || params === void 0 ? void 0 : params.alert)) { (0, log_1.logError)(`please run this command under ${(params === null || params === void 0 ? void 0 : params.isEnterprise) ? 'erda-enterprise-ui' : 'erda-ui'} root directory`); process.exit(1); } return isInRoot; }; exports.isCwdInRoot = isCwdInRoot; const getCwdModuleName = (params) => { const currentDir = (params === null || params === void 0 ? void 0 : params.currentPath) || process.cwd(); let moduleName = null; let isInRoot = true; if (!fs_1.default.existsSync((0, path_1.join)(currentDir, 'package.json'))) { isInRoot = false; } else { const pkg = fs_1.default.readFileSync((0, path_1.join)(currentDir, 'package.json'), 'utf8'); const { name } = JSON.parse(pkg); if (!name.startsWith('@erda-ui/')) { isInRoot = false; } else { moduleName = name.slice('@erda-ui/'.length); } } if (!isInRoot || !moduleName) { (0, log_1.logError)('please run this command under an erda-ui module root directory'); process.exit(1); } return moduleName; }; exports.getCwdModuleName = getCwdModuleName; const getEnvConfig = (currentDir) => { const { parsed } = dotenv_1.default.config({ path: `${currentDir || process.cwd()}/.env` }); if (!parsed) { throw Error(`.env file not exist in ${process.cwd()}`); } return parsed; }; exports.getEnvConfig = getEnvConfig; const getModuleList = () => { const envConfig = (0, exports.getEnvConfig)(); return envConfig.MODULES.split(',').map((m) => m.trim()); }; exports.getModuleList = getModuleList; const clearPublic = () => __awaiter(void 0, void 0, void 0, function* () { (0, log_1.logInfo)('clear public folder'); yield rimraf_1.default.sync(`${(0, exports.getPublicDir)()}/*`); }); exports.clearPublic = clearPublic; const getCliDir = () => { return (0, path_1.join)(process.cwd(), 'cli'); }; exports.getCliDir = getCliDir; const getCoreDir = () => { return (0, path_1.join)(process.cwd(), 'core'); }; exports.getCoreDir = getCoreDir; const getShellDir = () => { return (0, path_1.join)(process.cwd(), 'shell'); }; exports.getShellDir = getShellDir; const getPublicDir = () => { return (0, path_1.join)(process.cwd(), 'public'); }; exports.getPublicDir = getPublicDir; const getSchedulerDir = () => { return (0, path_1.join)(process.cwd(), 'scheduler'); }; exports.getSchedulerDir = getSchedulerDir; const killPidTree = () => __awaiter(void 0, void 0, void 0, function* () { let pids; try { pids = yield (0, pidtree_1.default)(process.pid, { root: true }); } catch (err) { if (err.message === 'No matching pid found') return true; throw err; } pids.forEach((el) => { try { process.kill(el); } catch (err) { if (err.code !== 'ESRCH') throw err; } }); return true; }); exports.killPidTree = killPidTree; exports.registryDir = 'registry.erda.cloud/erda/ui'; exports.defaultRegistry = 'registry.cn-hangzhou.aliyuncs.com/terminus/erda-ui'; exports.defaultEnterpriseRegistry = 'registry.cn-hangzhou.aliyuncs.com/terminus/erda-enterprise-ui'; exports.ALL_MODULES = ['core', 'shell', 'market', 'uc'];