UNPKG

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
'use strict'; 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