summaryrefslogtreecommitdiff
path: root/packages/pagefind
diff options
context:
space:
mode:
Diffstat (limited to 'packages/pagefind')
-rw-r--r--packages/pagefind/lektor_pagefind.py44
-rw-r--r--packages/pagefind/setup.py13
2 files changed, 57 insertions, 0 deletions
diff --git a/packages/pagefind/lektor_pagefind.py b/packages/pagefind/lektor_pagefind.py
new file mode 100644
index 0000000..17627fc
--- /dev/null
+++ b/packages/pagefind/lektor_pagefind.py
@@ -0,0 +1,44 @@
+from __future__ import annotations
+
+import subprocess
+from pathlib import Path
+from typing import Any
+
+from lektor.pluginsystem import Plugin
+
+COMPONENT_UI_FILES = (
+ "pagefind-component-ui.css",
+ "pagefind-component-ui.js",
+)
+
+
+class PagefindPlugin(Plugin):
+ name = "Pagefind"
+ description = "Generate the Pagefind search index."
+
+ def on_after_prune(
+ self,
+ builder: Any,
+ all: bool,
+ **extra: Any,
+ ) -> None:
+ if all:
+ return
+
+ site_path = Path(builder.destination_path)
+
+ subprocess.run(
+ [
+ "npx",
+ "pagefind",
+ "--site",
+ str(site_path),
+ ],
+ cwd=self.env.root_path,
+ check=True,
+ )
+
+ pagefind_path = site_path / "pagefind"
+
+ for filename in COMPONENT_UI_FILES:
+ (pagefind_path / filename).unlink(missing_ok=True)
diff --git a/packages/pagefind/setup.py b/packages/pagefind/setup.py
new file mode 100644
index 0000000..066d872
--- /dev/null
+++ b/packages/pagefind/setup.py
@@ -0,0 +1,13 @@
+from setuptools import setup
+
+setup(
+ name="lektor-pagefind",
+ version="0.1.0",
+ py_modules=["lektor_pagefind"],
+ entry_points={
+ "lektor.plugins": [
+ "pagefind = lektor_pagefind:PagefindPlugin",
+ ]
+ },
+ install_requires=[],
+)