@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
JavaScript
;
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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