sf-decomposer
Version:
Break down large Salesforce metadata files into smaller, more manageable files for version control and then recreate deployment-compatible files.
29 lines • 1.85 kB
JavaScript
/* eslint-disable no-await-in-loop */
import { getRegistryValuesBySuffix } from '../metadata/getRegistryValuesBySuffix.js';
import { readOriginalLogFile, checkLogForErrors } from '../service/core/checkLogforErrors.js';
import { decomposeFileHandler } from '../service/decompose/decomposeFileHandler.js';
import { LOG_FILE } from '../helpers/constants.js';
export async function decomposeMetadataTypes(options) {
const { metadataTypes, prepurge, postpurge, debug, format, ignoreDirs, strategy, decomposeNestedPerms, log, warn } = options;
for (const metadataType of metadataTypes) {
const { metaAttributes, ignorePath } = await getRegistryValuesBySuffix(metadataType, 'decompose', ignoreDirs);
let effectiveStrategy = strategy;
if (metadataType === 'labels' && strategy === 'grouped-by-tag') {
warn('Overriding strategy to "unique-id" for custom labels, as "grouped-by-tag" is not supported.');
effectiveStrategy = 'unique-id';
}
if (metadataType === 'loyaltyProgramSetup' && strategy === 'grouped-by-tag') {
warn('Overriding strategy to "unique-id" for loyaltyProgramSetup, as "grouped-by-tag" is not supported.');
effectiveStrategy = 'unique-id';
}
const currentLogFile = await readOriginalLogFile(LOG_FILE);
await decomposeFileHandler(metaAttributes, prepurge, postpurge, debug, format, ignorePath, effectiveStrategy, decomposeNestedPerms);
const decomposeErrors = await checkLogForErrors(LOG_FILE, currentLogFile);
if (decomposeErrors.length > 0) {
decomposeErrors.forEach((error) => warn(error));
}
log(`All metadata files have been decomposed for the metadata type: ${metadataType}`);
}
return { metadata: metadataTypes };
}
//# sourceMappingURL=decomposeMetadataTypes.js.map