UNPKG

@copado/copado-cli

Version:

Copado Developer CLI

79 lines 3.86 kB
"use strict"; 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