diff --git a/src/zona/layout.py b/src/zona/layout.py index f309dbd..9ee3b00 100644 --- a/src/zona/layout.py +++ b/src/zona/layout.py @@ -23,11 +23,12 @@ class Layout: output=(root / "public").resolve() if not output else output, ) if validate: - for path in [layout.content, layout.templates]: - if not path.is_dir(): - raise FileNotFoundError( - f"Missing required directory: {path}" - ) + if not layout.content.is_dir(): + raise FileNotFoundError("Missing required content directory!") + if not layout.templates.is_dir(): + # use the included defaults + layout.templates = util.get_resource_dir("templates") + return layout diff --git a/src/zona/util.py b/src/zona/util.py index 3244249..823180f 100644 --- a/src/zona/util.py +++ b/src/zona/util.py @@ -25,6 +25,14 @@ def get_resources(subdir: str) -> list[ZonaResource]: return out +def get_resource_dir(subdir: str) -> Path: + dir = resources.files("zona").joinpath(f"data/{subdir}") + with resources.as_file(dir) as path: + assert isinstance(path, Path) + assert path.is_dir() + return path + + def ensure_parents(target: Path): """Ensure the target's parent directories exist.""" target.parent.mkdir(parents=True, exist_ok=True)