zcatalyst-cli
Version:
Command Line Tool for CATALYST
306 lines (305 loc) • 11.6 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.resolveProjectPath = exports.upsertProject = exports.upsertEnv = exports.removeProject = exports.transformEnv = exports.transformProject = exports.makeDefaultProjectActive = exports.getProjectRoot = exports.getDefaultEnvName = exports.getDefaultProjectName = exports.getDefaultProjectId = exports.getProjectTimezone = exports.getDomainKey = exports.getDomainPrefix = exports.getEnvName = exports.getEnvId = exports.getProjectName = exports.getProjectId = void 0;
const ansi_colors_1 = require("ansi-colors");
const path_1 = __importDefault(require("path"));
const index_js_1 = __importDefault(require("../error/index.js"));
const runtime_store_1 = __importDefault(require("../runtime-store"));
const constants_1 = require("./constants");
const fs_1 = require("./fs");
const js_1 = require("./js");
const option_js_1 = require("./option.js");
function getDefaultProject(throwError) {
const rc = runtime_store_1.default.get('rc', null);
if (rc === null) {
if (throwError) {
throw new index_js_1.default(constants_1.FILENAME.rc + ' file needed', {
exit: 1,
errorId: 'PROJ-1',
arg: [constants_1.FILENAME.rc, (0, ansi_colors_1.bold)('catalyst init project')]
});
}
return;
}
return rc.defaultProject;
}
function getDefaultEnv(throwError) {
const rc = runtime_store_1.default.get('rc', null);
if (rc === null) {
if (throwError) {
throw new index_js_1.default(constants_1.FILENAME.rc + ' file needed', {
exit: 1,
errorId: 'PROJ-1',
arg: [constants_1.FILENAME.rc, (0, ansi_colors_1.bold)('catalyst init project')]
});
}
return;
}
return rc.defaultEnv;
}
function getProjectId(fallback) {
const projectId = runtime_store_1.default.get('project.id', null);
if (projectId === null) {
if (fallback === undefined) {
throw new index_js_1.default('ProjectId is needed', {
exit: 1,
errorId: 'PROJ-2',
arg: [
'Project ID',
(0, ansi_colors_1.bold)('-p'),
(0, ansi_colors_1.bold)((0, option_js_1.getCurrentCommand)()),
(0, ansi_colors_1.bold)('catalyst init project --force')
]
});
}
return fallback;
}
return projectId;
}
exports.getProjectId = getProjectId;
function getProjectName(fallback) {
const projectName = runtime_store_1.default.get('project.name', null);
if (projectName === null) {
if (fallback === undefined) {
throw new index_js_1.default('ProjectName is needed', {
exit: 1,
errorId: 'PROJ-2',
arg: ['Project Name', (0, ansi_colors_1.bold)('catalyst init project --force')]
});
}
return fallback;
}
return projectName + '';
}
exports.getProjectName = getProjectName;
function getEnvId(fallback) {
return runtime_store_1.default.get('project.env.id', fallback);
}
exports.getEnvId = getEnvId;
function getEnvName(fallback = 'Development') {
return runtime_store_1.default.get('project.env.name', fallback);
}
exports.getEnvName = getEnvName;
function getDomainPrefix(fallback) {
const domainName = runtime_store_1.default.get('project.domain.name', null);
if (domainName === null) {
if (fallback === undefined) {
throw new index_js_1.default('domainName is needed', {
exit: 1,
errorId: 'PROJ-2',
arg: ['Domain Name', (0, ansi_colors_1.bold)('catalyst init project --force')]
});
}
return fallback;
}
return domainName + '';
}
exports.getDomainPrefix = getDomainPrefix;
function getDomainKey(fallback) {
const domainId = runtime_store_1.default.get('project.domain.id', null);
if (domainId === null) {
if (fallback === undefined) {
throw new index_js_1.default('domainId is needed', {
exit: 1,
errorId: 'PROJ-2',
arg: ['Domain ID', (0, ansi_colors_1.bold)('catalyst init project --force')]
});
}
return fallback;
}
return domainId;
}
exports.getDomainKey = getDomainKey;
function getProjectTimezone(fallback) {
const projectTimezone = runtime_store_1.default.get('project.timezone', null);
if (projectTimezone === null) {
if (fallback === undefined) {
throw new index_js_1.default('Project timezone is needed', {
exit: 1,
errorId: 'PROJ-2',
arg: ['Project timezone', (0, ansi_colors_1.bold)('catalyst init project --force')]
});
}
return fallback;
}
return projectTimezone + '';
}
exports.getProjectTimezone = getProjectTimezone;
function getDefaultProjectId(fallback) {
const defaultProject = getDefaultProject(fallback === undefined);
if (defaultProject !== undefined) {
return defaultProject.id + '';
}
if (fallback === undefined) {
throw new index_js_1.default('Default project id in rc file is not found', {
exit: 2
});
}
return fallback;
}
exports.getDefaultProjectId = getDefaultProjectId;
function getDefaultProjectName(fallback) {
const defaultProject = getDefaultProject(fallback === undefined);
if (defaultProject !== undefined) {
return defaultProject.name;
}
if (fallback === undefined) {
throw new index_js_1.default('Default project name in rc file is not found', {
exit: 2
});
}
return fallback;
}
exports.getDefaultProjectName = getDefaultProjectName;
function getDefaultEnvName(fallback) {
const defaultEnv = getDefaultEnv(fallback === undefined);
if (defaultEnv !== undefined) {
return defaultEnv.name;
}
if (fallback === undefined) {
throw new index_js_1.default('Default Environment name in rc file is not found', {
exit: 2
});
}
return fallback;
}
exports.getDefaultEnvName = getDefaultEnvName;
function getProjectRoot(fallback = runtime_store_1.default.get('project.root', false) || process.cwd()) {
let projectRootDir = fallback;
while (!fs_1.SYNC.fileExists(path_1.default.resolve(projectRootDir, './' + constants_1.FILENAME.config))) {
const parentDir = path_1.default.dirname(projectRootDir);
if (parentDir === projectRootDir) {
return fallback;
}
projectRootDir = parentDir;
}
return projectRootDir;
}
exports.getProjectRoot = getProjectRoot;
function makeDefaultProjectActive() {
return __awaiter(this, void 0, void 0, function* () {
const defaultProject = getDefaultProject(false);
if (defaultProject === undefined) {
throw new index_js_1.default('Unable to set default project active since value is not defined', {
exit: 2
});
}
const defaultEnv = getDefaultEnv(false);
if (defaultEnv === undefined) {
throw new index_js_1.default('Unable to set default env active since value is not defined', {
exit: 2
});
}
yield upsertProject(defaultProject, { active: true });
return upsertEnv(defaultProject.id, defaultEnv, { active: true });
});
}
exports.makeDefaultProjectActive = makeDefaultProjectActive;
function transformProject(projectObj) {
return js_1.JS.transform(projectObj, (result, value, key) => {
switch (key) {
case 'project_id':
case 'id':
key = 'id';
break;
case 'project_name':
key = 'name';
break;
case 'project_domain_details':
key = 'domain';
value = {
id: value.project_domain_id,
name: value.project_domain_name
};
break;
case 'project_type':
key = 'type';
break;
default:
break;
}
js_1.JS.set(result, key, value);
}, {});
}
exports.transformProject = transformProject;
function transformEnv(envObj) {
return js_1.JS.transform(envObj, (result, value, key) => {
switch (key) {
case 'env_zgid':
key = 'id';
break;
case 'env_name':
key = 'name';
break;
case 'env_type':
key = 'type';
break;
default:
break;
}
js_1.JS.set(result, key, value);
}, {});
}
exports.transformEnv = transformEnv;
function removeProject(projectId) {
return __awaiter(this, void 0, void 0, function* () {
const rc = runtime_store_1.default.get('rc', null);
if (rc === null) {
throw new index_js_1.default(constants_1.FILENAME.rc + ' file needed to remove project', {
exit: 2
});
}
return rc.removeProject(projectId);
});
}
exports.removeProject = removeProject;
function upsertEnv(projectId, envObj, { base = false, active = false }) {
return __awaiter(this, void 0, void 0, function* () {
const transformedEnv = transformEnv(envObj);
const rc = runtime_store_1.default.get('rc', null);
if (rc === null) {
throw new index_js_1.default(constants_1.FILENAME.rc + ' file needed to upsert environment', {
exit: 2
});
}
return rc.associateEnv(projectId, transformedEnv, {
base,
active
});
});
}
exports.upsertEnv = upsertEnv;
function upsertProject(projectObj, { base = false, active = false }) {
return __awaiter(this, void 0, void 0, function* () {
const transformedProj = transformProject(projectObj);
const rc = runtime_store_1.default.get('rc', null);
if (rc === null) {
throw new index_js_1.default(constants_1.FILENAME.rc + ' file needed to upsert project', {
exit: 2
});
}
return rc.upsertProject(transformedProj, {
base,
active
});
});
}
exports.upsertProject = upsertProject;
function resolveProjectPath(...filePath) {
let root = runtime_store_1.default.get('project.root', runtime_store_1.default.get('cwd'));
root = root !== undefined ? root : getProjectRoot();
return path_1.default.resolve(root, ...filePath);
}
exports.resolveProjectPath = resolveProjectPath;