UNPKG

@flxbl-io/sfp

Version:

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

102 lines 9.68 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 }); const path = require("path"); const fs = __importStar(require("fs-extra")); const GeneratePackageChangelog_1 = __importDefault(require("../../changelog/GeneratePackageChangelog")); const rimraf = __importStar(require("rimraf")); const sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger")); const AdmZip = require("adm-zip"); class ArtifactGenerator { //Generates the universal artifact used by the CLI and AZP static async generateArtifact(sfpPackage, project_directory, artifact_directory) { try { // Artifact folder consisting of artifact metadata, changelog & source let artifactFolder = `${sfpPackage.packageName}_sfpowerscripts_artifact`; // Absolute filepath of artifact let artifactFilepath; if (artifact_directory != null) { artifactFilepath = path.resolve(artifact_directory, artifactFolder); } else { artifactFilepath = path.resolve(artifactFolder); } fs.mkdirpSync(artifactFilepath); let sourcePackage = path.join(artifactFilepath, `source`); fs.mkdirpSync(sourcePackage); //Clean up temp directory if (fs.existsSync(path.join(sfpPackage.workingDirectory, '.sfp'))) rimraf.sync(path.join(sfpPackage.workingDirectory, '.sfp')); if (fs.existsSync(path.join(sfpPackage.workingDirectory, '.sfdx'))) rimraf.sync(path.join(sfpPackage.workingDirectory, '.sfdx')); fs.copySync(sfpPackage.workingDirectory, sourcePackage); // rimraf.sync(sfpPackage.workingDirectory); // This gives an error in windows "Error: EPERM: operation not permitted, unlink" https://github.com/flxbl-io/sfp/issues/128 await fs.remove(sfpPackage.workingDirectory); //Modify Source Directory to the new source directory inside the artifact sfpPackage.sourceDir = `source`; let artifactMetadataFilePath = path.join(artifactFilepath, `artifact_metadata.json`); fs.writeFileSync(artifactMetadataFilePath, JSON.stringify(sfpPackage, null, 4)); // Generate package changelog // Doesnt need a from version number, as it always generate from start let generatePackageChangelog = new GeneratePackageChangelog_1.default(sfpPackage.packageName, undefined, sfpPackage.sourceVersion, project_directory); let packageChangelog = await generatePackageChangelog.exec(); let changelogFilepath = path.join(artifactFilepath, `changelog.json`); fs.writeFileSync(changelogFilepath, JSON.stringify(packageChangelog, null, 4)); sfp_logger_1.default.log('Artifact Copy Completed', sfp_logger_1.LoggerLevel.DEBUG); let zip = new AdmZip(); zip.addLocalFolder(artifactFilepath, artifactFolder); sfp_logger_1.default.log(`Zipping ${artifactFolder}`, sfp_logger_1.LoggerLevel.DEBUG); let packageVersionNumber = ArtifactGenerator.substituteBuildNumberWithPreRelease(sfpPackage.versionNumber); let zipArtifactFilepath = artifactFilepath + `_` + packageVersionNumber + `.zip`; zip.writeZip(zipArtifactFilepath); sfp_logger_1.default.log(`Artifact Generation Completed for ${sfpPackage.packageType} to ${zipArtifactFilepath}`, sfp_logger_1.LoggerLevel.INFO); // Cleanup unzipped artifact // https://github.com/flxbl-io/sfp/issues/128 // Undo fix for #128, use a different approach as its failing in docker await fs.remove(artifactFilepath); return zipArtifactFilepath; } catch (error) { throw new Error('Unable to create artifact' + error); } } static substituteBuildNumberWithPreRelease(packageVersionNumber) { let segments = packageVersionNumber.split('.'); if (segments.length === 4) { packageVersionNumber = segments.reduce((version, segment, segmentsIdx) => { if (segmentsIdx === 3) return version + '-' + segment; else return version + '.' + segment; }); } return packageVersionNumber; } } exports.default = ArtifactGenerator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWZhY3RHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9hcnRpZmFjdHMvZ2VuZXJhdG9ycy9BcnRpZmFjdEdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQThCO0FBQzlCLDZDQUErQjtBQUMvQix3R0FBZ0Y7QUFFaEYsK0NBQWlDO0FBQ2pDLG1FQUE4RDtBQUM5RCxrQ0FBbUM7QUFHbkMsTUFBcUIsaUJBQWlCO0lBQ2xDLDBEQUEwRDtJQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUNoQyxVQUFzQixFQUN0QixpQkFBeUIsRUFDekIsa0JBQTBCO1FBRTFCLElBQUksQ0FBQztZQUNELHNFQUFzRTtZQUN0RSxJQUFJLGNBQWMsR0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLDBCQUEwQixDQUFDO1lBRWpGLGdDQUFnQztZQUNoQyxJQUFJLGdCQUF3QixDQUFDO1lBRTdCLElBQUksa0JBQWtCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzdCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDeEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUVoQyxJQUFJLGFBQWEsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xFLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFN0IseUJBQXlCO1lBQ3pCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxn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