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