sf-decomposer
Version:
Break down large Salesforce metadata files into smaller, more manageable files for version control and then recreate deployment-compatible files.
60 lines • 2.19 kB
JavaScript
;
import { readFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import DecomposerDecompose from '../commands/decomposer/decompose.js';
import { getRepoRoot } from '../service/getRepoRoot.js';
import { HOOK_CONFIG_JSON } from '../helpers/constants.js';
export const scopedPostRetrieve = async function (options) {
if (!options.result?.retrieveResult.response.status) {
return;
}
let configFile;
const { repoRoot } = await getRepoRoot();
if (!repoRoot) {
return;
}
const configPath = resolve(repoRoot, HOOK_CONFIG_JSON);
try {
const jsonString = await readFile(configPath, 'utf-8');
configFile = JSON.parse(jsonString);
}
catch (error) {
return;
}
const metadataTypes = configFile.metadataSuffixes || '.';
const format = configFile.decomposedFormat || 'xml';
const prepurge = configFile.prePurge || false;
const postpurge = configFile.postPurge || false;
const ignorePackageDirs = configFile.ignorePackageDirectories || '';
const strategy = configFile.strategy || 'unique-id';
if (metadataTypes.trim() === '.') {
return;
}
const metadataTypesArray = metadataTypes.split(',');
const commandArgs = [];
for (const metadataType of metadataTypesArray) {
const sanitizedMetadataType = metadataType.replace(/,/g, '');
commandArgs.push('--metadata-type');
commandArgs.push(sanitizedMetadataType);
}
if (ignorePackageDirs.trim() !== '') {
const ignorePackageDirArray = ignorePackageDirs.split(',');
for (const dirs of ignorePackageDirArray) {
const sanitizedDir = dirs.replace(/,/g, '');
commandArgs.push('--ignore-package-directory');
commandArgs.push(sanitizedDir);
}
}
commandArgs.push('--format');
commandArgs.push(format);
if (prepurge) {
commandArgs.push('--prepurge');
}
if (postpurge) {
commandArgs.push('--postpurge');
}
commandArgs.push('--strategy');
commandArgs.push(strategy);
await DecomposerDecompose.run(commandArgs);
};
//# sourceMappingURL=scopedPostRetrieve.js.map