From 2b07fc2c7e4e6311d35ae72c17b25e47680d61f6 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 7 Jun 2024 04:06:59 +0800 Subject: refactor: rename scripts (#29) --- scripts/run-tool.js | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 scripts/run-tool.js (limited to 'scripts/run-tool.js') diff --git a/scripts/run-tool.js b/scripts/run-tool.js new file mode 100755 index 0000000..43a6587 --- /dev/null +++ b/scripts/run-tool.js @@ -0,0 +1,80 @@ +#!/usr/bin/env node + +const path = require("path"); +const fs = require("fs"); + +function parseArgv() { + let funcName = process.argv[1]; + let funcData = null; + + if (funcName.endsWith("run-tool.js")) { + funcName = process.argv[2]; + funcData = process.argv[3]; + } else { + funcName = path.basename(funcName); + funcData = process.argv[2]; + } + + if (funcName.endsWith(".js")) { + funcName = funcName.slice(0, -3); + } + + return [funcName, funcData]; +} + +function loadFunc(funcName) { + const funcFileName = `${funcName}.js`; + const funcPath = path.resolve( + process.env["LLM_FUNCTIONS_DIR"], + `tools/${funcFileName}`, + ); + try { + return require(funcPath); + } catch { + console.log(`Invalid function: ${funcFileName}`); + process.exit(1); + } +} + +function loadEnv(filePath) { + try { + const data = fs.readFileSync(filePath, "utf-8"); + const lines = data.split("\n"); + + lines.forEach((line) => { + if (line.trim().startsWith("#") || line.trim() === "") return; + + const [key, ...value] = line.split("="); + process.env[key.trim()] = value.join("=").trim(); + }); + } catch {} +} + +process.env["LLM_FUNCTIONS_DIR"] = path.resolve(__dirname, ".."); + +loadEnv(path.resolve(process.env["LLM_FUNCTIONS_DIR"], ".env")); + +const [funcName, funcData] = parseArgv(); + +process.env["LLM_FUNCTION_NAME"] = funcName; + +if (process.env["LLM_FUNCTION_ACTION"] == "declarate") { + const { declarate } = loadFunc(funcName); + console.log(JSON.stringify(declarate(), null, 2)); +} else { + if (!funcData) { + console.log("No json data"); + process.exit(1); + } + + let args; + try { + args = JSON.parse(funcData); + } catch { + console.log("Invalid json data"); + process.exit(1); + } + + const { execute } = loadFunc(funcName); + execute(args); +} -- cgit v1.2.3