UNPKG

sf-decomposer

Version:

Split large Salesforce metadata files into version-control-friendly pieces and rebuild deployment-ready files.

63 lines 2.3 kB
'use strict'; import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import { decomposeMetadataTypes } from '../core/decomposeMetadataTypes.js'; import { getRepoRoot } from '../service/core/getRepoRoot.js'; import { HOOK_CONFIG_JSON } from '../helpers/constants.js'; function buildDecomposeOptions(configFile, log) { const metadataSuffixes = configFile.metadataSuffixes || '.'; const ignorePackageDirs = configFile.ignorePackageDirectories || ''; const manifest = configFile.manifest ?? ''; if (metadataSuffixes.trim() === '.' && manifest.trim() === '') { return undefined; } const metadataTypes = metadataSuffixes.trim() !== '.' ? metadataSuffixes .split(',') .map((type) => type.replace(/,/g, '').trim()) .filter((type) => type.length > 0) : undefined; const ignoreDirs = ignorePackageDirs.trim() !== '' ? ignorePackageDirs .split(',') .map((dir) => dir.replace(/,/g, '').trim()) .filter((dir) => dir.length > 0) : undefined; return { metadataTypes, prepurge: configFile.prePurge || false, postpurge: configFile.postPurge || false, format: configFile.decomposedFormat || 'xml', ignoreDirs, strategy: configFile.strategy || 'unique-id', decomposeNestedPerms: configFile.decomposeNestedPermissions || false, manifest: manifest.trim() !== '' ? manifest.trim() : undefined, overrides: configFile.overrides, log, }; } export const scopedPostRetrieve = async function (options) { if (!options.result?.retrieveResult.response.status) { return; } const { repoRoot } = await getRepoRoot(); if (!repoRoot) { return; } const configPath = resolve(repoRoot, HOOK_CONFIG_JSON); let configFile; try { const jsonString = await readFile(configPath, 'utf-8'); configFile = JSON.parse(jsonString); } catch (error) { return; } const decomposeOptions = buildDecomposeOptions(configFile, (msg) => { this.log(msg); }); if (!decomposeOptions) return; await decomposeMetadataTypes(decomposeOptions); }; //# sourceMappingURL=scopedPostRetrieve.js.map