aboutsummaryrefslogtreecommitdiff
path: root/.local/share/bin/dox-open
diff options
context:
space:
mode:
Diffstat (limited to '.local/share/bin/dox-open')
-rwxr-xr-x.local/share/bin/dox-open31
1 files changed, 31 insertions, 0 deletions
diff --git a/.local/share/bin/dox-open b/.local/share/bin/dox-open
new file mode 100755
index 0000000..493c435
--- /dev/null
+++ b/.local/share/bin/dox-open
@@ -0,0 +1,31 @@
+#!/bin/node
+
+import { glob, readFile } from 'node:fs/promises';
+import { spawn } from 'node:child_process';
+import { argv, chdir, cwd } from 'node:process';
+import { join } from 'node:path';
+
+argv.shift();
+argv.shift();
+chdir("search");
+
+var symbols = {};
+for await (const chunk of glob('all_*.js')) {
+ const contents = await readFile(chunk);
+ const searchData = eval(`${contents}; searchData`);
+ const here = cwd();
+
+ for (const [ _id, [ symbol, ...entry ] ] of searchData) {
+ symbols[symbol] = entry.map(e => `file://${join(here, e[0])}`);
+ }
+}
+
+for (const symbol of argv) {
+ if (!(symbol in symbols)) {
+ console.error(`No doxygen index for symbol \`${symbol}\``);
+ continue;
+ }
+ const urls = symbols[symbol];
+ spawn('xdg-open', [ urls[0], ]);
+}
+