@copado/copado-cli
Version:
Copado Developer CLI
79 lines • 3.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExtensionConfiguration = void 0;
const fs_1 = require("fs");
const core_1 = require("@salesforce/core");
core_1.Messages.importMessagesDirectory(__dirname);
const messages = core_1.Messages.loadMessages('@copado/copado-cli', 'copado_work');
class ExtensionConfiguration {
/**
* Resolve Extension Configuration file content if any config path to get root folder/s
* After resolving it updates the configuration file
* @param extensionConfigFilePath
*/
static resolveConfigurationFile(extensionConfigFilePath) {
let cliConfiguration;
try {
cliConfiguration = this.readFile(extensionConfigFilePath); // JSON.parse(readFileSync(extensionConfigFilePath, 'utf8'));
}
catch (err) {
throw new Error(messages.getMessage('push.parsingCliConfigurationFailed'));
}
// Resolve categories property in Extension Configuration File
if (cliConfiguration === null || cliConfiguration === void 0 ? void 0 : cliConfiguration.categories) {
for (const criteria of Object.values(cliConfiguration.categories)) {
let criteriaConfig = criteria;
const config = criteriaConfig === null || criteriaConfig === void 0 ? void 0 : criteriaConfig.config;
if (this.fileExists(config === null || config === void 0 ? void 0 : config.filepath)) {
let fileContent;
try {
fileContent = this.readFile(config === null || config === void 0 ? void 0 : config.filepath); // JSON.parse(readFileSync(config?.filepath, 'utf8'));
}
catch (err) {
throw new Error(messages.getMessage('push.parsingProjectJsonFailed') + (config === null || config === void 0 ? void 0 : config.filepath));
}
criteriaConfig.rootfolder = this.resolveRootFolderFromConfig(config, fileContent);
}
}
}
this.writeFile(extensionConfigFilePath, cliConfiguration);
}
static readFile(path) {
return JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
}
static writeFile(path, content) {
(0, fs_1.writeFileSync)(path, JSON.stringify(content, null, 2));
}
static fileExists(path) {
return (0, fs_1.existsSync)(path);
}
static resolveRootFolderFromConfig(config, fileContent) {
var _a;
let rootfolder = (_a = config === null || config === void 0 ? void 0 : config.property.split('.')) === null || _a === void 0 ? void 0 : _a.reduce((filtered, key) => {
var _a;
if (key.substring(key.length - 2) === '[]') {
return filtered[key.substring(0, key.length - 2)];
}
if (Array.isArray(filtered)) {
return filtered === null || filtered === void 0 ? void 0 : filtered.map((element) => element[key]);
}
if ((_a = key.match(/\[([0-9]+)\]/)) === null || _a === void 0 ? void 0 : _a.length) {
return filtered[key.split('[')[0]][key.substring(key.indexOf('[') + 1, key.lastIndexOf(']'))];
}
return filtered[key];
}, fileContent);
return this.addPatternsToRootFolderPath(rootfolder);
}
static addPatternsToRootFolderPath(rootfolder) {
var _a;
if (Array.isArray(rootfolder)) {
rootfolder = (_a = rootfolder.filter((folder) => folder)) === null || _a === void 0 ? void 0 : _a.map((folder) => folder + '/**');
}
else {
rootfolder = rootfolder + '/**';
}
return rootfolder;
}
}
exports.ExtensionConfiguration = ExtensionConfiguration;
//# sourceMappingURL=extensionConfiguration.js.map