From 45d76d623419bd1b943df45b04b21aeef7cf9634 Mon Sep 17 00:00:00 2001 From: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com> Date: Thu, 2 Nov 2023 16:25:33 -0500 Subject: [PATCH] ts/tooling (#1602) --- gpt4all-bindings/typescript/.gitignore | 1 + .../typescript/scripts/mkclangd.js | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 gpt4all-bindings/typescript/scripts/mkclangd.js diff --git a/gpt4all-bindings/typescript/.gitignore b/gpt4all-bindings/typescript/.gitignore index 0297e51b..7fd9d3cb 100644 --- a/gpt4all-bindings/typescript/.gitignore +++ b/gpt4all-bindings/typescript/.gitignore @@ -8,3 +8,4 @@ prebuilds/ !.yarn/sdks !.yarn/versions runtimes/ +compile_flags.txt diff --git a/gpt4all-bindings/typescript/scripts/mkclangd.js b/gpt4all-bindings/typescript/scripts/mkclangd.js new file mode 100644 index 00000000..20494490 --- /dev/null +++ b/gpt4all-bindings/typescript/scripts/mkclangd.js @@ -0,0 +1,43 @@ +/// makes compile_flags.txt for clangd server support with this project +/// run this with typescript as your cwd +// +//for debian users make sure to install libstdc++-12-dev + +const nodeaddonapi=require('node-addon-api').include; + +const fsp = require('fs/promises'); +const { existsSync, readFileSync } = require('fs'); +const assert = require('node:assert'); +const findnodeapih = () => { + assert(existsSync("./build"), "Haven't built the application once yet. run node scripts/prebuild.js"); + const dir = readFileSync("./build/config.gypi", 'utf8'); + const nodedir_line = dir.match(/"nodedir": "([^"]+)"/); + assert(nodedir_line, "Found no matches") + assert(nodedir_line[1]); + console.log("node_api.h found at: ", nodedir_line[1]); + return nodedir_line[1]+"/include/node"; +}; + +const knownIncludes = [ + '-I', + './', + '-I', + nodeaddonapi.substring(1, nodeaddonapi.length-1), + '-I', + '../../gpt4all-backend', + '-I', + findnodeapih() +]; +const knownFlags = [ + "-x", + "c++", + '-std=c++17' +]; + + +const output = knownFlags.join('\n')+'\n'+knownIncludes.join('\n'); + +fsp.writeFile('./compile_flags.txt', output, 'utf8') + .then(() => console.log('done')) + .catch(() => console.err('failed')); +