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)