docs: make the typedoc generation portable
[poolifier.git] / typedoc.mjs
diff --git a/typedoc.mjs b/typedoc.mjs
new file mode 100644 (file)
index 0000000..b9f9cc9
--- /dev/null
@@ -0,0 +1,32 @@
+import { copyFileSync, mkdirSync, readdirSync, rmSync } from 'node:fs'
+import { dirname, join } from 'node:path'
+import { fileURLToPath } from 'node:url'
+import { execSync } from 'node:child_process'
+
+try {
+  mkdirSync(join(dirname(fileURLToPath(import.meta.url)), 'tmp'), {
+    recursive: true
+  })
+  const markdownFiles = readdirSync(
+    join(dirname(fileURLToPath(import.meta.url)), 'docs')
+  ).filter(file => file.endsWith('.md'))
+  for (const markdownFile of markdownFiles) {
+    copyFileSync(
+      join(dirname(fileURLToPath(import.meta.url)), 'docs', markdownFile),
+      join(dirname(fileURLToPath(import.meta.url)), 'tmp', markdownFile)
+    )
+  }
+  execSync('npx typedoc', { stdio: 'inherit' })
+  for (const markdownFile of markdownFiles) {
+    copyFileSync(
+      join(dirname(fileURLToPath(import.meta.url)), 'tmp', markdownFile),
+      join(dirname(fileURLToPath(import.meta.url)), 'docs', markdownFile)
+    )
+  }
+  rmSync(join(dirname(fileURLToPath(import.meta.url)), 'tmp'), {
+    recursive: true,
+    force: true
+  })
+} catch (e) {
+  console.error(e)
+}