sf-decomposer
Version:
Break down large Salesforce metadata files into smaller, more manageable files for version control and then recreate deployment-compatible files.
50 lines • 1.83 kB
JavaScript
;
import { readFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import DecomposerRecompose from '../commands/decomposer/recompose.js';
import { getRepoRoot } from '../service/getRepoRoot.js';
import { HOOK_CONFIG_JSON } from '../helpers/constants.js';
export const prerun = async function (options) {
if (!['project:deploy:validate', 'project:deploy:start'].includes(options.Command.id)) {
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 postpurge = configFile.postPurge || false;
const ignorePackageDirs = configFile.ignorePackageDirectories || '';
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);
}
}
if (postpurge) {
commandArgs.push('--postpurge');
}
await DecomposerRecompose.run(commandArgs);
};
//# sourceMappingURL=prerun.js.map