UNPKG

sfdx-hardis

Version:

Swiss-army-knife Toolbox for Salesforce. Allows you to define a complete CD/CD Pipeline. Orchestrate base commands and assist users with interactive wizards

49 lines 2.26 kB
import c from 'chalk'; import fs from 'fs-extra'; import * as path from 'path'; import { createTempDir, uxLog } from './index.js'; import { glob } from 'glob'; import { parseXmlFile, writeXmlFile } from './xmlUtils.js'; import { isScratchOrg } from './orgUtils.js'; import { GLOB_IGNORE_PATTERNS } from './projectUtils.js'; // Update files for special cases export async function arrangeFilesBefore(commandThis, options = {}) { const tempDir = await createTempDir(); const arrangedFiles = []; if ((await isScratchOrg(options)) === true) { const arrangedLookupFields = await removeLookupFilters(tempDir, commandThis, options); arrangedFiles.push(...arrangedLookupFields); } return arrangedFiles; } // Remove lookup filters because they aren't pushed well export async function removeLookupFilters(tempDir, commandThis, options = {}) { const arrangedFiles = []; const findFieldsPattern = (options.rootFolder || '.') + `/**/objects/**/fields/**.field-meta.xml`; const matchingFieldFiles = await glob(findFieldsPattern, { cwd: process.cwd(), ignore: GLOB_IGNORE_PATTERNS }); for (const fieldFile of matchingFieldFiles) { // skip if managed field if ((path.basename(fieldFile).match(/__/g) || []).length === 2) { continue; } const fieldXml = await parseXmlFile(fieldFile); if (fieldXml?.CustomField?.lookupFilter) { const backupFile = path.join(tempDir, fieldFile); await fs.ensureDir(path.dirname(backupFile)); await fs.copyFile(fieldFile, backupFile); delete fieldXml.CustomField.lookupFilter; await writeXmlFile(fieldFile, fieldXml); arrangedFiles.push({ file: fieldFile, backupFile: backupFile }); uxLog(commandThis, c.grey(`Removed lookup filter from field ${fieldFile}`)); } } return arrangedFiles; } // Update files for special cases export async function restoreArrangedFiles(arrangedFiles, commandThis) { for (const arrangedFile of arrangedFiles) { await fs.copyFile(arrangedFile.backupFile, arrangedFile.file); uxLog(commandThis, c.grey(`Restored file ${arrangedFile.file}`)); } } //# sourceMappingURL=workaroundUtils.js.map