@erda-ui/cli
Version:
Command line interface for rapid Erda UI development
143 lines (142 loc) • 5.93 kB
JavaScript
;
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'];