diff --git a/src/zona/builder.py b/src/zona/builder.py index 141556e..a429034 100644 --- a/src/zona/builder.py +++ b/src/zona/builder.py @@ -6,6 +6,7 @@ from zona.layout import Layout, discover_layout from zona.config import ZonaConfig from zona import util from pathlib import Path +from rich import print class ZonaBuilder: @@ -39,6 +40,13 @@ class ZonaBuilder: layout.root / "content" / "static" ): item.metadata, item.content = parse_metadata(path) + if item.metadata.post == True: + item.post = True + elif item.metadata.post is None: + # check if in posts dir? + blog_dir = base / Path(self.config.blog.dir) + if item.source.is_relative_to(blog_dir): + item.post = True item.type = ItemType.MARKDOWN item.copy = False name = destination.stem @@ -58,6 +66,7 @@ class ZonaBuilder: "" if rel_url == Path(".") else rel_url.as_posix() ) items.append(item) + # print(item) self.items = items def _build(self): diff --git a/src/zona/config.py b/src/zona/config.py index c694d7f..2f90646 100644 --- a/src/zona/config.py +++ b/src/zona/config.py @@ -14,6 +14,11 @@ def find_config(start: Path | None = None) -> Path | None: return None +@dataclass +class BlogConfig: + dir: str = "blog" + + @dataclass class MarkdownConfig: image_labels: bool = True @@ -44,6 +49,7 @@ class ZonaConfig: markdown: MarkdownConfig = field(default_factory=MarkdownConfig) theme: ThemeConfig = field(default_factory=ThemeConfig) build: BuildConfig = field(default_factory=BuildConfig) + blog: BlogConfig = field(default_factory=BlogConfig) @classmethod def from_file(cls, path: Path) -> "ZonaConfig": diff --git a/src/zona/metadata.py b/src/zona/metadata.py index 7b722dc..de2233e 100644 --- a/src/zona/metadata.py +++ b/src/zona/metadata.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from rich import print from pathlib import Path from datetime import date @@ -19,6 +20,7 @@ class Metadata: header: bool = True footer: bool = True template: str = "page.html" + post: bool | None = None def parse_metadata(path: Path) -> tuple[Metadata, str]: diff --git a/src/zona/models.py b/src/zona/models.py index 5c6b0ab..785f02f 100644 --- a/src/zona/models.py +++ b/src/zona/models.py @@ -20,6 +20,7 @@ class Item: content: str | None = None type: ItemType | None = None copy: bool = True + post: bool = False # @dataclass