UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

154 lines 12.6 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MergeResult = void 0; const SfpPackage_1 = require("../SfpPackage"); const SfpPackageBuilder_1 = __importDefault(require("../SfpPackageBuilder")); const tmp = require('tmp'); const fs = __importStar(require("fs-extra")); const path = require('path'); const source_deploy_retrieve_1 = require("@salesforce/source-deploy-retrieve"); class PackageMergeManager { constructor(sfpPackages, logger) { this.sfpPackages = sfpPackages; this.logger = logger; } async mergePackages(targetOrAlias) { let mergeResult = new MergeResult(); mergeResult.skippedPackages = []; mergeResult.unlockedPackages = []; mergeResult.mergedPackages = []; mergeResult.requestedMergeOrder = this.sfpPackages; //Use the .sfp directory let tmpDir = tmp.dirSync({ unsafeCleanup: true }); let locationOfCopiedDirectory = tmpDir.name; //Create a temporary folder let mergedProjectDir = path.join(locationOfCopiedDirectory, `${this.makefolderid(5)}_merged`); mergeResult.mergedProjectDirectory = mergedProjectDir; let mergedPackageDir = path.join(mergedProjectDir, 'force-app'); fs.mkdirpSync(mergedPackageDir); //Create sfdx project.json fs.writeJSONSync(path.join(mergedProjectDir, 'sfdx-project.json'), this.getMergedProjectManifest(), { spaces: 4, }); const converter = new source_deploy_retrieve_1.MetadataConverter(); for (const sfpPackage of this.sfpPackages) { let componentSet; if (sfpPackage.packageType == SfpPackage_1.PackageType.Data) { mergeResult.skippedPackages.push(sfpPackage); continue; } else if (sfpPackage.packageType == SfpPackage_1.PackageType.Unlocked) { //Push for now mergeResult.skippedPackages.push(sfpPackage); mergeResult.unlockedPackages.push(sfpPackage); continue; } else { //handle alaisfy directory if (sfpPackage.packageDescriptor.aliasfy) { let aliasFolder = path.join(process.cwd(), sfpPackage.projectDirectory, sfpPackage.packageDirectory, targetOrAlias ? targetOrAlias : 'default'); if (fs.existsSync(aliasFolder)) { componentSet = source_deploy_retrieve_1.ComponentSet.fromSource(aliasFolder); } else { continue; } } else { componentSet = source_deploy_retrieve_1.ComponentSet.fromSource(path.join(process.cwd(), sfpPackage.projectDirectory, sfpPackage.packageDirectory)); } fs.copyFileSync(path.join(sfpPackage.projectDirectory, 'forceignores', '.buildignore'), path.join(mergedProjectDir, '.forceignore')); console.log('copied file'); //Merge let results = await converter.convert(componentSet, 'source', { type: 'merge', mergeWith: source_deploy_retrieve_1.ComponentSet.fromSource(mergedPackageDir).getSourceComponents(), defaultDirectory: mergedPackageDir, forceIgnoredPaths: new Set([ path.join(process.cwd(), sfpPackage.projectDirectory, 'forceignores', '.buildignore'), ]), }); for (const component of results.converted) { if (this.isXmlFileSuffixDuped(component.xml)) { this.dedupeXmlFileSuffix(component.xml); } } mergeResult.mergedPackages.push(sfpPackage); } } //Build SfpPackage if (mergeResult.mergedPackages.length > 0) { let mergedSfPPackage = await SfpPackageBuilder_1.default.buildPackageFromProjectDirectory(this.logger, mergeResult.mergedProjectDirectory, 'merged', { branch: 'temp', packageVersionNumber: '1.0.0.0', sourceVersion: '00000000', }, null); mergeResult.mergedPackage = mergedSfPPackage; } tmpDir.removeCallback(); return mergeResult; } isXmlFileSuffixDuped(xmlFile) { return xmlFile.match(/-meta\.xml/g)?.length === 2; } dedupeXmlFileSuffix(xmlFile) { let deduped = xmlFile.replace(/-meta\.xml/, ''); fs.renameSync(xmlFile, deduped); return deduped; } getMergedProjectManifest() { let projectManifest = { packageDirectories: [ { path: 'force-app', package: 'merged', versionNumber: '2.0.0.0', default: true, }, ], namespace: '', sourceApiVersion: '53.0', }; return projectManifest; } makefolderid(length) { let result = ''; let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } } exports.default = PackageMergeManager; class MergeResult { } exports.MergeResult = MergeResult; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZU1lcmdlTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3BhY2thZ2UvcGFja2FnZU1lcmdlci9QYWNrYWdlTWVyZ2VNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQXdEO0FBQ3hELDZFQUFxRDtBQUNyRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsNkNBQStCO0FBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QiwrRUFBcUY7QUFHckYsTUFBcUIsbUJBQW1CO0lBQ3BDLFlBQTJCLFdBQXlCLEVBQVUsTUFBZTtRQUFsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVM7SUFBRyxDQUFDO0lBRTFFLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBc0I7UUFDN0MsSUFBSSxXQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFDakQsV0FBVyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDakMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUVoQyxXQUFXLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVuRCx3QkFBd0I7UUFDeEIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUkseUJBQXlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FB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