UNPKG

@crestron/ch5-shell-utilities-cli

Version:
378 lines (377 loc) 12.9 kB
"use strict"; // Copyright (C) 2021 to the present, Crestron Electronics, Inc. // All rights reserved. // No part of this software may be reproduced in any form, machine // or natural, without the express written consent of Crestron Electronics. // Use of this source code is subject to the terms of the Crestron Software License Agreement // under which you licensed this source code. 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()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Ch5CliUtil = void 0; var chalk_1 = __importDefault(require("chalk")); var rimraf = require("rimraf"); var fs = require("fs"); var Ch5CliUtil = /** @class */ (function () { function Ch5CliUtil() { } /** * Read directory async * @param path * @returns */ Ch5CliUtil.prototype.readdirAsync = function (path) { return new Promise(function (resolve, reject) { fs.readdir(path, function (error, result) { if (error) { resolve(error); } else { resolve(result); } }); }); }; /** * Delete directory by path * @param {string} directoryName */ Ch5CliUtil.prototype.deleteFolder = function (directoryName) { try { return rimraf.sync(directoryName); } catch (e) { return false; } }; /** * Delete File * @param {string} completeFilePath */ Ch5CliUtil.prototype.deleteFile = function (completeFilePath) { try { return rimraf.sync(completeFilePath); } catch (e) { return false; } }; /** * Write Error * @param error */ Ch5CliUtil.prototype.writeError = function (error) { console.log(chalk_1.default.red("".concat(error.name, ": ").concat(error.message))); }; /** * Read File Content * @param path * @returns */ Ch5CliUtil.prototype.readFileContent = function (path) { return __awaiter(this, void 0, void 0, function () { var output; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.readFile(path)]; case 1: output = _a.sent(); return [2 /*return*/, output]; } }); }); }; /** * Read File Content Sync * @param path * @returns */ Ch5CliUtil.prototype.readFileContentSync = function (path) { return fs.readFileSync(path, 'utf8'); }; /** * Read File * @param path * @returns */ Ch5CliUtil.prototype.readFile = function (path) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { fs.readFile(path, 'utf8', function (err, data) { if (err) { reject(err); } resolve(data); }); })]; }); }); }; /** * Check if input is valid. Invalid are "", {}, [], null, undefined. * @param {*} input */ Ch5CliUtil.prototype.isValidInput = function (input) { if (typeof input === 'undefined' || input === null) { return false; } else if (typeof input === 'number') { return true; } else if (typeof input === 'string') { if (input && input.trim() !== "") { // console.log("inside if true-->", input); return true; } else { // console.log("inside else false-->", input); return false; } } else if (typeof input === 'boolean') { return true; } else if (typeof input === 'object') { if (input) { return true; } else { return false; } } else { return false; } }; /** * * @param {*} input */ Ch5CliUtil.prototype.isValidObject = function (input) { if (!input || !this.isValidInput(input)) { return false; } else if (typeof (input) === "object" && !Array.isArray(input)) { return true; } else { return false; } }; /** * Convert string to array * @param {*} inputArray */ Ch5CliUtil.prototype.convertArrayToString = function (inputArray, delimiter) { if (delimiter === void 0) { delimiter = ","; } if (typeof (delimiter) != "string") { delimiter = ', '; // forcing default } if (typeof (inputArray) === "string") { return inputArray; // since its of string type, return as is } else if (this.isValidInput(inputArray) && inputArray.length > 0) { var output = ""; for (var i = 0; i < inputArray.length; i++) { output += inputArray[i] + delimiter; } if (delimiter.trim() === "") { return output.trim(); } else { return output.substr(0, output.length - delimiter.length).trim(); } } else { return ""; } }; /** * Convert string to boolean * @param {*} input */ Ch5CliUtil.prototype.convertStringToBoolean = function (input) { if (this.isValidInput(input) && typeof (input) === "string") { if (input.trim().toLowerCase() === 'n') { return false; } else if (input.trim().toLowerCase() === 'y') { return true; } else { return false; } } else { return false; } }; /** * Gets the text from the config default.json file. * @param {*} key * @param {...any} values */ Ch5CliUtil.prototype.getText = function (DYNAMIC_TEXT_MESSAGES, key) { var values = []; for (var _i = 2; _i < arguments.length; _i++) { values[_i - 2] = arguments[_i]; } try { var output = ""; if (String(key).indexOf(".") !== -1) { var newArray = key.split("."); output = DYNAMIC_TEXT_MESSAGES[newArray[0]]; for (var i = 1; i < newArray.length; i++) { output = output[newArray[i]]; } } else { output = DYNAMIC_TEXT_MESSAGES[key]; } if (values && values.length > 0) { for (var i = 0; i < values.length; i++) { output = this.replaceAll(output, "{" + i + "}", values[i]); } } return output; } catch (e) { return key; } }; /** * * @param input * @param isEmptyValueEqualToTrue * @returns */ Ch5CliUtil.prototype.toBoolean = function (input, isEmptyValueEqualToTrue) { if (isEmptyValueEqualToTrue === void 0) { isEmptyValueEqualToTrue = false; } if (this.isValidInput(input)) { var str = String(input); switch (str.toLowerCase().trim()) { case "true": case "1": case "y": case "Y": return true; case "false": case "0": case "n": case "N": case null: return false; case "": return isEmptyValueEqualToTrue; default: return false; } } else { return isEmptyValueEqualToTrue; } }; /** * * @param {*} order * @param {...any} property */ Ch5CliUtil.prototype.dynamicSort = function (order) { var property = []; for (var _i = 1; _i < arguments.length; _i++) { property[_i - 1] = arguments[_i]; } var sort_order = 1; if (order === "desc") { sort_order = -1; } return function (a, b) { if (property.length > 1) { var propA = a[property[0]]; var propB = b[property[0]]; for (var i = 1; i < property.length; i++) { propA = propA[property[i]]; propB = propB[property[i]]; } // a should come before b in the sorted order if (propA < propB) { return -1 * sort_order; // a should come after b in the sorted order } else if (propA > propB) { return 1 * sort_order; // a and b are the same } else { return 0 * sort_order; } } else { // a should come before b in the sorted order if (a[property] < b[property]) { return -1 * sort_order; // a should come after b in the sorted order } else if (a[property] > b[property]) { return 1 * sort_order; // a and b are the same } else { return 0 * sort_order; } } }; }; /** * * @param {*} str * @param {*} find * @param {*} replace */ Ch5CliUtil.prototype.replaceAll = function (str, find, replace) { if (str && String(str).trim() !== "") { return String(str).split(find).join(replace); } else { return str; } }; return Ch5CliUtil; }()); exports.Ch5CliUtil = Ch5CliUtil;