UNPKG

sf-decomposer

Version:

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

58 lines 2.03 kB
'use strict'; import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import { recomposeMetadataTypes } from '../core/recomposeMetadataTypes.js'; import { getRepoRoot } from '../service/core/getRepoRoot.js'; import { HOOK_CONFIG_JSON } from '../helpers/constants.js'; function buildRecomposeOptions(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, postpurge: configFile.postPurge || false, ignoreDirs, manifest: manifest.trim() !== '' ? manifest.trim() : undefined, log, }; } export const prerun = async function (options) { if (!['project:deploy:validate', 'project:deploy:start'].includes(options.Command.id)) { 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 recomposeOptions = buildRecomposeOptions(configFile, (msg) => { this.log(msg); }); if (!recomposeOptions) return; await recomposeMetadataTypes(recomposeOptions); }; //# sourceMappingURL=prerun.js.map