UNPKG

@flxbl-io/sfp

Version:

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

121 lines 11.1 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 fs = __importStar(require("fs-extra")); const Git_1 = __importDefault(require("../../core/git/Git")); const GitTags_1 = __importDefault(require("../../core/git/GitTags")); const rimraf = __importStar(require("rimraf")); const FetchArtifactSelector_1 = __importDefault(require("./FetchArtifactSelector")); const lodash_1 = __importDefault(require("lodash")); const path_1 = __importDefault(require("path")); const Fileutils_1 = __importDefault(require("../../core/utils/Fileutils")); const sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger")); class FetchImpl { constructor(artifactDirectory, scriptPath, scope, npmrcPath, logger) { this.artifactDirectory = artifactDirectory; this.scriptPath = scriptPath; this.scope = scope; this.npmrcPath = npmrcPath; this.logger = logger; if (!fs.existsSync(artifactDirectory)) fs.mkdirpSync(artifactDirectory); } async fetchArtifacts(releaseDefinitions) { const git = await Git_1.default.initiateRepo(); let fetchedArtifacts = { success: [], failed: [], }; let allArtifacts = []; for (const releaseDefinition of releaseDefinitions) { //Each release will be downloaded to specific subfolder inside the provided artifact directory //As each release is a collection of artifacts let revisedArtifactDirectory = path_1.default.join(this.artifactDirectory, releaseDefinition.release.replace(/[/\\?%*:|"<>]/g, '-')); if (releaseDefinition.releaseConfigName) { revisedArtifactDirectory = path_1.default.join(this.artifactDirectory, releaseDefinition.releaseConfigName.replace(/[/\\?%*:|"<>]/g, '-'), releaseDefinition.release.replace(/[/\\?%*:|"<>]/g, '-')); } rimraf.sync(revisedArtifactDirectory); fs.mkdirpSync(revisedArtifactDirectory); let artifactsToDownload = []; //additional sanity to not repeat download for (let artifactEntry of Object.entries(releaseDefinition.artifacts)) { if (!lodash_1.default.includes(allArtifacts, { name: artifactEntry[0], version: artifactEntry[1] }, 0)) { allArtifacts.push({ name: artifactEntry[0], version: artifactEntry[1] }); artifactsToDownload.push({ name: artifactEntry[0], version: artifactEntry[1] }); } } for (let artifact of artifactsToDownload) { try { await this.fetchAnArtifact(artifact, git, this.scriptPath, this.scope, this.npmrcPath, revisedArtifactDirectory); fetchedArtifacts.success.push(artifact); } catch (error) { sfp_logger_1.default.log(error.message, sfp_logger_1.LoggerLevel.DEBUG, this.logger); fetchedArtifacts.failed.push(artifact); } } } return fetchedArtifacts; } async fetchArtifactsProvidedVersion(artifactVersions) { const git = await Git_1.default.initiateRepo(); let fetchedArtifacts = { success: [], failed: [], }; let allArtifacts = lodash_1.default.clone(artifactVersions); let revisedArtifactDirectory = path_1.default.join(this.artifactDirectory, Fileutils_1.default.makefolderid(8)); rimraf.sync(revisedArtifactDirectory); fs.mkdirpSync(revisedArtifactDirectory); let i; for (const artifactVersion of artifactVersions) { try { await this.fetchAnArtifact(artifactVersion, git, this.scriptPath, this.scope, this.npmrcPath, revisedArtifactDirectory); fetchedArtifacts.success.push(artifactVersion); } catch (error) { sfp_logger_1.default.log(error.message, sfp_logger_1.LoggerLevel.DEBUG, this.logger); fetchedArtifacts.failed.push(artifactVersion); } } return fetchedArtifacts; } async fetchAnArtifact(artifact, git, scriptPath, scope, npmrcPath, revisedArtifactDirectory) { let version; if (artifact.version === 'LATEST_TAG' || artifact.version === 'LATEST_GIT_TAG') { let latestGitTagVersion = new GitTags_1.default(git, artifact.name); version = await latestGitTagVersion.getVersionFromLatestTag(); } else version = artifact.version; let artifactFetcher = new FetchArtifactSelector_1.default(scriptPath, scope, npmrcPath).getArtifactFetcher(); artifactFetcher.fetchArtifact(artifact.name, revisedArtifactDirectory, version, false); } } exports.default = FetchImpl; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmV0Y2hJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltcGwvYXJ0aWZhY3RzL0ZldGNoSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLDZEQUFxQztBQUNyQyxxRUFBNkM7QUFHN0MsK0NBQWlDO0FBQ2pDLG9GQUE0RDtBQUM1RCxvREFBdUI7QUFDdkIsZ0RBQXdCO0FBQ3hCLDJFQUFtRDtBQUNuRCxtRUFBc0U7QUFFdEUsTUFBcUIsU0FBUztJQUMxQixZQUNZLGlCQUF5QixFQUN6QixVQUFrQixFQUNsQixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsTUFBYTtRQUpiLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQU87UUFFckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7WUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQ3ZCLGtCQUF1QztRQUt2QyxNQUFNLEdBQUcsR0FBUSxNQUFNLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUxQyxJQUFJLGdCQUFnQixHQUE4RDtZQUM5RSxPQUFPLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUVGLElBQUksWUFBWSxHQUF3QyxFQUFFLENBQUM7UUFHM0QsS0FBSyxNQUFNLGlCQUFpQixJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDakQsOEZBQThGO1lBQzlGLDhDQUE4QztZQUU5QyxJQUFJLHdCQUF3QixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQ3BDLElBQUksQ0FB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