UNPKG

@broadcom/endevor-bridge-for-git-for-zowe-cli

Version:

Endevor Bridge for Git plug-in for Zowe CLI

173 lines (166 loc) 7.72 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib_es6 = require('../../../../node_modules/tslib/tslib.es6.js'); var BaseHandler = require('../../../BaseHandler.js'); var object = require('../../../../utils/object.js'); var imperative = require('@zowe/imperative'); var fs = require('fs'); var child_process = require('child_process'); var AddElementOptions = require('./AddElementOptions.js'); require('../../../../api/constants/EBGConstants.js'); require('../../../../api/constants/PluginConstants.js'); require('../../../../api/doc/ebg/IMappingView.js'); var EBGMappingService = require('../../../../api/service/EBGMappingService.js'); var LocalRepositoryUtils = require('../../../../api/utils/LocalRepositoryUtils.js'); require('../../../../api/utils/ChangeValidator.js'); require('../../../../api/doc/IBranchMetadata.js'); require('lodash'); require('../../../../api/utils/OptionValidator.js'); var AddElementSchema = require('../../../../api/utils/schemas/AddElementSchema.js'); var zod = require('zod'); function _interopNamespaceDefault(e) { var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n.default = e; return Object.freeze(n); } var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs); /* * Copyright (c) 2019 Broadcom. All Rights Reserved. The term * "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. * * This software and all information contained therein is * confidential and proprietary and shall not be duplicated, * used, disclosed, or disseminated in any way except as * authorized by the applicable license agreement, without the * express written permission of Broadcom. All authorized * reproductions must be marked with this language. * * EXCEPT AS SET FORTH IN THE APPLICABLE LICENSE AGREEMENT, TO * THE EXTENT PERMITTED BY APPLICABLE LAW, BROADCOM PROVIDES THIS * SOFTWARE WITHOUT WARRANTY OF ANY KIND, INCLUDING WITHOUT * LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL BROADCOM * BE LIABLE TO THE END USER OR ANY THIRD PARTY FOR ANY LOSS OR * DAMAGE, DIRECT OR INDIRECT, FROM THE USE OF THIS SOFTWARE, * INCLUDING WITHOUT LIMITATION, LOST PROFITS, BUSINESS * INTERRUPTION, GOODWILL, OR LOST DATA, EVEN IF BROADCOM IS * EXPRESSLY ADVISED OF SUCH LOSS OR DAMAGE. */ class AddElementHandler extends BaseHandler.BaseHandler { static getElementsFromFile(elementsPath) { let rawJson; try { rawJson = JSON.parse(fs__namespace.readFileSync(elementsPath, "utf8")); } catch (e) { throw new imperative.ImperativeError({ msg: `${elementsPath} does not contain a valid file.`, additionalDetails: e.message, }); } const validate = AddElementSchema.addElementSchema.safeParse(rawJson); if (validate.success) { return validate.data; } else { throw new imperative.ImperativeError({ msg: `${elementsPath} does not contain a valid file.`, additionalDetails: zod.z.prettifyError(validate.error), }); } } processWithSession() { return tslib_es6.__awaiter(this, void 0, void 0, function* () { var _a; const task = { percentComplete: imperative.TaskProgress.ZERO_PERCENT, statusMessage: "Validate options", stageName: imperative.TaskStage.IN_PROGRESS, }; this.progress.startBar({ task }); const context = this.getOption(AddElementOptions.AddElementOptions.CONTEXT); const repoName = this.getOption(AddElementOptions.AddElementOptions.MAPPING); const system = this.getOption(AddElementOptions.AddElementOptions.ENDEVOR_SYSTEM, false); const subsystem = this.getOption(AddElementOptions.AddElementOptions.ENDEVOR_SUBSYSTEM, false); let branchId = this.getOption(AddElementOptions.AddElementOptions.BRANCH_ID, false); const allBranches = this.getOption(AddElementOptions.AddElementOptions.ALL_BRANCHES, false); const withDependencies = this.getOption(AddElementOptions.AddElementOptions.WITH_DEPENDENCIES, false); const forceGetDependencies = this.getOption(AddElementOptions.AddElementOptions.FORCE_GET_DEPENDENCIES, false); const file = this.getOption(AddElementOptions.AddElementOptions.FILE_NAME, false); task.statusMessage = "Schedule retrieving element"; task.percentComplete = imperative.TaskProgress.FIFTY_PERCENT; let payload; // if branchId is not in the request try to get it from mapping json if (object.isNil(branchId)) { try { const workDir = child_process.execSync(/^win/.test(process.platform) ? "git rev-parse --show-toplevel >NUL 2>&1" : "git rev-parse --show-toplevel >/dev/null 2>&1", { encoding: "utf8" }) .toString() .trim(); branchId = LocalRepositoryUtils.LocalRepositoryUtils.readMappingMetadata(workDir).git.branch; } catch (_b) { branchId = null; } } if (object.isNil(file)) { const name = this.getOption(AddElementOptions.AddElementOptions.ELEMENT_NAME, true); const type = this.getOption(AddElementOptions.AddElementOptions.ELEMENT_TYPE, true); payload = { elements: [ { name, type, system, subsystem, withDependencies, forceGetDependencies, }, ], branchId, allBranches, }; } else { const endevorElements = AddElementHandler.getElementsFromFile(file); const elements = []; endevorElements.forEach((e) => { elements.push({ name: e.fullElmName, type: e.typeName, system, subsystem, withDependencies, forceGetDependencies, }); }); payload = { elements, branchId, allBranches, }; } this.validateRequiredOptions(); const response = yield EBGMappingService.EBGMappingService.addElement(this.apiClient, context, repoName, payload); task.percentComplete = imperative.TaskProgress.ONE_HUNDRED_PERCENT; this.console.log("Your request has been processed"); this.console.log("Reports:"); (_a = response.reports) === null || _a === void 0 ? void 0 : _a.forEach((report) => { this.console.log("return code: " + report.code + ", " + "message: " + report.message); }); }); } } exports.default = AddElementHandler;