@zambelz/zhc
Version:
API Management Tools
79 lines • 2.95 kB
JavaScript
;
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