UNPKG

@zowe/cli

Version:

Zowe CLI is a command line interface (CLI) that provides a simple and streamlined way to interact with IBM z/OS.

180 lines 7.74 kB
"use strict"; /* * This program and the accompanying materials are made available under the terms of the * Eclipse Public License v2.0 which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-v20.html * * SPDX-License-Identifier: EPL-2.0 * * Copyright Contributors to the Zowe Project. * */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CompareBaseHelper = void 0; const path = require("path"); const fs = require("fs"); const imperative_1 = require("@zowe/imperative"); /** * Base helper for compare command to handle common operations through the comparison * @export */ class CompareBaseHelper { /** * Creates an instance of CompareBaseHelper * @param {IHandlerParameters} commandParameters Command parameters sent to the handler * @memberof CompareBaseHelper */ constructor(commandParameters) { var _a; /** * file compare option for file1 * @public * @memberof CompareBaseHelper */ this.file1Options = {}; /** * file compare option for file2 * @public * @memberof CompareBaseHelper */ this.file2Options = {}; this.file1Options.binary = commandParameters.arguments.binary; this.file2Options.binary = commandParameters.arguments.binary2; this.file1Options.encoding = commandParameters.arguments.encoding; this.file2Options.encoding = commandParameters.arguments.encoding2; this.file1Options.record = commandParameters.arguments.record; this.file2Options.record = commandParameters.arguments.record2; this.file1Options.volumeSerial = commandParameters.arguments.volumeSerial; this.file2Options.volumeSerial = commandParameters.arguments.volumeSerial2; if (((_a = this.file2Options) === null || _a === void 0 ? void 0 : _a.binary) == null) { this.file2Options.binary = this.file1Options.binary; } if (this.file2Options.encoding == null) { this.file2Options.encoding = this.file1Options.encoding; } if (this.file2Options.record == null) { this.file2Options.record = this.file1Options.record; } this.seqnum = commandParameters.arguments.seqnum; this.browserView = commandParameters.arguments.browserView; this.contextLines = commandParameters.arguments.contextLines; this.responseTimeout = commandParameters.arguments.responseTimeout; this.file1Options.responseTimeout = this.responseTimeout; this.file2Options.responseTimeout = this.responseTimeout; // Clear undefined properties this.file1Options = JSON.parse(JSON.stringify(this.file1Options)); this.file2Options = JSON.parse(JSON.stringify(this.file2Options)); } /** * Parse the spool description and split them into individual properties * @param spoolDescription Colon-separated (:) spool descriptor * @returns Object containing the name, job id, and spool id */ prepareSpoolDescriptor(spoolDescription) { const descriptionSeparator = ":"; const spoolDescArr = spoolDescription.split(descriptionSeparator); const jobName = spoolDescArr[0]; const jobId = spoolDescArr[1]; const spoolId = Number(spoolDescArr[2]); return { jobName, jobId, spoolId }; } /** * Helper function that compare-related handlers will use to get the contents of a local file * @param filePath Path to the file to compare against * @returns Buffer with the contents of the file */ prepareLocalFile(filePath) { const localFile = path.isAbsolute(filePath) ? filePath : path.resolve(filePath); let lfContentBuf; let localFileHandle; try { try { // check if the path given is of a file or not localFileHandle = fs.openSync(localFile, 'r'); if (!fs.fstatSync(localFileHandle).isFile()) { throw new imperative_1.ImperativeError({ msg: 'Path is not of a file. Please check the path and try again' }); } } catch (error) { if (error instanceof imperative_1.ImperativeError) throw error; throw new imperative_1.ImperativeError({ msg: 'Path not found. Please check the path and try again' }); } // reading local file as buffer lfContentBuf = fs.readFileSync(localFileHandle); } finally { if (localFileHandle != null) fs.closeSync(localFileHandle); } return lfContentBuf; } /** * This method will prepare the strings for comparison ready * @param {string | Buffer } content - Content string or buffer of file 1 * @param {string | Buffer } content2 - - Content string or buffer of file 2 * @returns * @public * @memberof CompareBaseHelper */ prepareContent(content) { let contentString = content.toString(); if (this.seqnum === false) { let seqnumlen = 8; /* If Windows format file, account for the carriage return */ if (content.toString().endsWith("\r\n")) { seqnumlen++; } contentString = content.toString().split("\n").map((line) => line.slice(0, -seqnumlen)).join("\n"); } return contentString; } /** * To get the difference string in terminal or in browser * @param {string} string1 - string of file 1 content * @param {string} string2 - string of file 2 content * @param {IDiffOptions} options * @returns {IZosFilesResponse} * @public * @memberof CompareBaseHelper */ getResponse(string1, string2, options) { return __awaiter(this, void 0, void 0, function* () { // CHECKING IF THE BROWSER VIEW IS TRUE, OPEN UP THE DIFFS IN BROWSER if (this.browserView) { yield imperative_1.DiffUtils.openDiffInbrowser(string1, string2, options); return { success: true, commandResponse: "Launching data-sets diffs in browser...", apiResponse: {} }; } const jsonDiff = yield imperative_1.DiffUtils.getDiffString(string1, string2, { outputFormat: 'terminal', contextLinesArg: this.contextLines, name1: options === null || options === void 0 ? void 0 : options.name1, name2: options === null || options === void 0 ? void 0 : options.name2 }); return { success: true, commandResponse: jsonDiff, apiResponse: {} }; }); } } exports.CompareBaseHelper = CompareBaseHelper; //# sourceMappingURL=CompareBaseHelper.js.map