Add Directory(Output) class to create and track directories

This commit is contained in:
2026-08-15 01:03:00 +02:00
parent 5660ef2974
commit b51f445ed1
2 changed files with 26 additions and 0 deletions
+2
View File
@@ -4,6 +4,7 @@ from omicron.ssg.output.factory import create_content, is_content
from omicron.ssg.output.file import File from omicron.ssg.output.file import File
from omicron.ssg.output.index import Index, discover_index from omicron.ssg.output.index import Index, discover_index
from omicron.ssg.output.memory import Memory from omicron.ssg.output.memory import Memory
from omicron.ssg.output.directory import Directory
from omicron.ssg.output.symlink import Symlink from omicron.ssg.output.symlink import Symlink
from omicron.ssg.output.tags import Tags, discover_tags from omicron.ssg.output.tags import Tags, discover_tags
@@ -17,6 +18,7 @@ __all__ = [
"File", "File",
"Index", "Index",
"discover_index", "discover_index",
"Directory",
"Memory", "Memory",
"Symlink", "Symlink",
"Tags", "Tags",
+24
View File
@@ -0,0 +1,24 @@
import logging
from typing import TYPE_CHECKING
from omicron.ssg.output.output import Output
from pathlib import Path
log = logging.getLogger(__name__)
if TYPE_CHECKING:
from omicron.ssg.site import Site # for static checking with mypy
else:
Site = "omicron.ssg.site.Site" # for runtime checking with beartype
class Directory(Output):
def __init__(self, site: Site, destination: Path):
super().__init__(site, destination)
url_path = Path("/") / site.base_dir / destination
# rebuild url because Output strips /index.html which is a valid dir
self.url = url_path.as_posix()
def write(self) -> None:
dest = self.site.output_path / self.destination
dest.mkdir(parents=True, exist_ok=True)
log.debug("Created directory %s", dest)