aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/build-declarations.js
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-07 21:36:34 +0800
committerGitHub <noreply@github.com>2024-06-07 21:36:34 +0800
commit63df67acea19b3708d34ef3b656c1b784c2a72f4 (patch)
tree740ff6c276131898e59bf1495abc238d3fdfb9a7 /scripts/build-declarations.js
parente1d895cc9abb0f7ffac8acc043746cbe2e5f4fe1 (diff)
downloadllm-functions-docker-63df67acea19b3708d34ef3b656c1b784c2a72f4.tar.gz
refactor: numerous improvements (#32)
Diffstat (limited to 'scripts/build-declarations.js')
-rw-r--r--scripts/build-declarations.js49
1 files changed, 29 insertions, 20 deletions
diff --git a/scripts/build-declarations.js b/scripts/build-declarations.js
index 35a75ee..86908fa 100644
--- a/scripts/build-declarations.js
+++ b/scripts/build-declarations.js
@@ -1,11 +1,13 @@
#!/usr/bin/env node
const fs = require("fs");
+const path = require("path");
const TOOL_ENTRY_FUNC = "run";
-function main(isTool = true) {
+function main() {
const scriptfile = process.argv[2];
+ const isTool = path.dirname(scriptfile) == "tools";
const contents = fs.readFileSync(process.argv[2], "utf8");
const functions = extractFunctions(contents, isTool);
let declarations = functions.map(({ funcName, jsdoc }) => {
@@ -56,13 +58,20 @@ function extractFunctions(contents, isTool) {
});
}
} else {
- const match = /function *([_A-Za-z]+)/.exec(line);
+ let match = /^export (async )?function ([A-Za-z0-9_]+)/.exec(line);
+ let funcName = null;
if (match) {
- const funcName = match[1];
- if (!funcName.startsWith("_")) {
- output.push({ funcName, jsdoc });
+ funcName = match[2];
+ }
+ if (!funcName) {
+ match = /^exports\.([A-Za-z0-9_]+) = (async )?function /.exec(line);
+ if (match) {
+ funcName = match[1];
}
}
+ if (funcName) {
+ output.push({ funcName, jsdoc });
+ }
}
jsdoc = "";
}
@@ -166,21 +175,6 @@ function buildProperty(type, description) {
}
/**
- * @param {string} filePath
- */
-function getBasename(filePath) {
- const filenameWithExt = filePath.split(/[/\\]/).pop();
-
- const lastDotIndex = filenameWithExt.lastIndexOf(".");
-
- if (lastDotIndex === -1) {
- return filenameWithExt;
- }
-
- return filenameWithExt.substring(0, lastDotIndex);
-}
-
-/**
* @param {string} name
* @param {string} description
* @param {Param[]} params
@@ -204,4 +198,19 @@ function buildDeclaration(name, description, params) {
return schema;
}
+/**
+ * @param {string} filePath
+ */
+function getBasename(filePath) {
+ const filenameWithExt = filePath.split(/[/\\]/).pop();
+
+ const lastDotIndex = filenameWithExt.lastIndexOf(".");
+
+ if (lastDotIndex === -1) {
+ return filenameWithExt;
+ }
+
+ return filenameWithExt.substring(0, lastDotIndex);
+}
+
main();