UNPKG

@zambelz/zhc

Version:
79 lines 2.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = runCustomScript; const node_child_process_1 = require("node:child_process"); const node_path_1 = __importDefault(require("node:path")); const global_1 = require("../../../utils/global"); const logger_1 = require("../../../utils/logger"); const internalScripts_1 = require("./internalScripts"); const fileOperation_1 = require("../../../utils/fileOperation"); const execInternalScript = (name, ...args) => { switch (name) { case "randomValue": return (0, internalScripts_1.randomValueScript)(parseInt(args[0])); } return null; }; const execExternalScript = (name, ...args) => { const executableLocation = node_path_1.default.join(global_1.ROOT_PATH, "scripts"); const files = (0, fileOperation_1.fileLists)(executableLocation); if (fileOperation_1.fileLists.length === 0) { (0, logger_1.logWarning)("No external scripts found"); return null; } const targetFileName = files.find(file => { const fileName = (0, fileOperation_1.removeFileExtension)(file); return fileName === name; }); if (!targetFileName) { (0, logger_1.logWarning)(`External script source for "${name}" not found`); return null; } const executableFilePath = node_path_1.default.join(executableLocation, targetFileName.replace("\n", "")); const isExecutable = (0, fileOperation_1.isFileExecutable)(executableFilePath); if (!isExecutable) { (0, logger_1.logWarning)(`External script source for "${name}" is not executable`); return null; } try { const cmd = (0, node_child_process_1.execSync)(`${executableFilePath} ${args}`); return cmd.toString().replace("\n", ""); } catch { return null; } }; const execShellCommand = (...args) => { const cmdInput = args.join(" "); if (!cmdInput || cmdInput.trim() === "") { return null; } try { const cmd = (0, node_child_process_1.execSync)(cmdInput); return cmd.toString().replace("\n", ""); } catch { (0, logger_1.logWarning)(`Failed to execute shell command: ${cmdInput}`); return null; } }; function runCustomScript(script, ...args) { if (!script || script.trim() === "") { (0, logger_1.logWarning)("No script provided"); return null; } const targetScripts = script.split(":"); const srcScript = targetScripts[0]; switch (srcScript) { case "script": return execExternalScript(targetScripts[1], ...args); case "shell": return execShellCommand(...args); default: return execInternalScript(targetScripts[0], ...args); } } //# sourceMappingURL=scriptExecutor.js.map