added logging
This commit is contained in:
parent
4fdb3365b9
commit
d1480df28a
5 changed files with 52 additions and 23 deletions
|
@ -8,6 +8,9 @@ from zona.config import ZonaConfig
|
||||||
from zona import util
|
from zona import util
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from rich import print
|
from rich import print
|
||||||
|
from zona.log import get_logger
|
||||||
|
|
||||||
|
logger = get_logger()
|
||||||
|
|
||||||
|
|
||||||
class ZonaBuilder:
|
class ZonaBuilder:
|
||||||
|
@ -39,9 +42,7 @@ class ZonaBuilder:
|
||||||
destination=destination,
|
destination=destination,
|
||||||
url=str(destination.relative_to(layout.output)),
|
url=str(destination.relative_to(layout.output)),
|
||||||
)
|
)
|
||||||
if path.name.endswith(
|
if path.name.endswith(".md") and not path.is_relative_to(
|
||||||
".md"
|
|
||||||
) and not path.is_relative_to(
|
|
||||||
layout.root / "content" / "static"
|
layout.root / "content" / "static"
|
||||||
):
|
):
|
||||||
item.metadata, item.content = parse_metadata(path)
|
item.metadata, item.content = parse_metadata(path)
|
||||||
|
@ -56,13 +57,11 @@ class ZonaBuilder:
|
||||||
item.copy = False
|
item.copy = False
|
||||||
name = destination.stem
|
name = destination.stem
|
||||||
if name == "index":
|
if name == "index":
|
||||||
item.destination = (
|
item.destination = item.destination.with_suffix(
|
||||||
item.destination.with_suffix(".html")
|
".html"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
relative = path.relative_to(base).with_suffix(
|
relative = path.relative_to(base).with_suffix("")
|
||||||
""
|
|
||||||
)
|
|
||||||
name = relative.stem
|
name = relative.stem
|
||||||
item.destination = (
|
item.destination = (
|
||||||
layout.output
|
layout.output
|
||||||
|
@ -74,9 +73,7 @@ class ZonaBuilder:
|
||||||
layout.output
|
layout.output
|
||||||
)
|
)
|
||||||
item.url = (
|
item.url = (
|
||||||
""
|
"" if rel_url == Path(".") else rel_url.as_posix()
|
||||||
if rel_url == Path(".")
|
|
||||||
else rel_url.as_posix()
|
|
||||||
)
|
)
|
||||||
items.append(item)
|
items.append(item)
|
||||||
# print(item)
|
# print(item)
|
||||||
|
@ -122,5 +119,7 @@ class ZonaBuilder:
|
||||||
util.copy_static_file(item.source, dst)
|
util.copy_static_file(item.source, dst)
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
|
logger.debug("Discovering...")
|
||||||
self._discover()
|
self._discover()
|
||||||
|
logger.debug("Building...")
|
||||||
self._build()
|
self._build()
|
||||||
|
|
|
@ -3,9 +3,12 @@ from pathlib import Path
|
||||||
from zona import server
|
from zona import server
|
||||||
from zona.builder import ZonaBuilder
|
from zona.builder import ZonaBuilder
|
||||||
from zona.layout import initialize_site
|
from zona.layout import initialize_site
|
||||||
|
from zona.log import setup_logging
|
||||||
|
|
||||||
app = typer.Typer()
|
app = typer.Typer()
|
||||||
|
|
||||||
|
setup_logging("DEBUG")
|
||||||
|
|
||||||
|
|
||||||
@app.command()
|
@app.command()
|
||||||
def build(root: Path | None = None, output: Path | None = None):
|
def build(root: Path | None = None, output: Path | None = None):
|
||||||
|
|
25
src/zona/log.py
Normal file
25
src/zona/log.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import logging
|
||||||
|
from typing import Literal
|
||||||
|
from rich.logging import RichHandler
|
||||||
|
|
||||||
|
_LOGGER_NAME = "zona"
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logging(
|
||||||
|
level: Literal["INFO", "DEBUG", "WARN", "ERROR"] = "INFO",
|
||||||
|
):
|
||||||
|
logger = logging.getLogger(_LOGGER_NAME)
|
||||||
|
logger.setLevel(level.upper())
|
||||||
|
|
||||||
|
logger.propagate = False
|
||||||
|
|
||||||
|
if not logger.handlers:
|
||||||
|
handler = RichHandler(rich_tracebacks=True, show_path=False)
|
||||||
|
handler.setLevel(level.upper())
|
||||||
|
formatter = logging.Formatter("%(message)s")
|
||||||
|
handler.setFormatter(formatter)
|
||||||
|
logger.addHandler(handler)
|
||||||
|
|
||||||
|
|
||||||
|
def get_logger(name: str = _LOGGER_NAME) -> logging.Logger:
|
||||||
|
return logging.getLogger(name)
|
|
@ -14,6 +14,9 @@ from pygments.formatters import HtmlFormatter
|
||||||
|
|
||||||
from zona import util
|
from zona import util
|
||||||
from zona.models import Item
|
from zona.models import Item
|
||||||
|
from zona.log import get_logger
|
||||||
|
|
||||||
|
logger = get_logger()
|
||||||
|
|
||||||
|
|
||||||
class ZonaRenderer(HTMLRenderer):
|
class ZonaRenderer(HTMLRenderer):
|
||||||
|
@ -28,7 +31,6 @@ class ZonaRenderer(HTMLRenderer):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.resolve: bool = resolve
|
self.resolve: bool = resolve
|
||||||
if self.resolve:
|
if self.resolve:
|
||||||
# print("Resolve is set")
|
|
||||||
assert source is not None
|
assert source is not None
|
||||||
assert layout is not None
|
assert layout is not None
|
||||||
assert item_map is not None
|
assert item_map is not None
|
||||||
|
@ -57,11 +59,11 @@ class ZonaRenderer(HTMLRenderer):
|
||||||
item = self.item_map.get(resolved)
|
item = self.item_map.get(resolved)
|
||||||
if item:
|
if item:
|
||||||
href = util.normalize_url(item.url)
|
href = util.normalize_url(item.url)
|
||||||
print(
|
logger.debug(
|
||||||
f"Link in file {self.source}: {_href} resolved to {href}"
|
f"Link in file {self.source}: {_href} resolved to {href}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print(
|
logger.debug(
|
||||||
f"Warning: resolved path {resolved} not found in item map"
|
f"Warning: resolved path {resolved} not found in item map"
|
||||||
)
|
)
|
||||||
body: Any = self.render_children(element)
|
body: Any = self.render_children(element)
|
||||||
|
|
|
@ -2,7 +2,6 @@ import signal
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from types import FrameType
|
from types import FrameType
|
||||||
from rich import print
|
|
||||||
from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
|
from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
|
||||||
import threading
|
import threading
|
||||||
from typing import override
|
from typing import override
|
||||||
|
@ -10,6 +9,9 @@ from watchdog.observers import Observer
|
||||||
from zona.builder import ZonaBuilder
|
from zona.builder import ZonaBuilder
|
||||||
from watchdog.events import FileSystemEventHandler, FileSystemEvent
|
from watchdog.events import FileSystemEventHandler, FileSystemEvent
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from zona.log import get_logger
|
||||||
|
|
||||||
|
logger = get_logger()
|
||||||
|
|
||||||
|
|
||||||
class QuietHandler(SimpleHTTPRequestHandler):
|
class QuietHandler(SimpleHTTPRequestHandler):
|
||||||
|
@ -44,26 +46,24 @@ class ZonaReloadHandler(FileSystemEventHandler):
|
||||||
@override
|
@override
|
||||||
def on_modified(self, event: FileSystemEvent):
|
def on_modified(self, event: FileSystemEvent):
|
||||||
if not self._should_ignore(event):
|
if not self._should_ignore(event):
|
||||||
print(f"Modified: {event.src_path}, rebuilding...")
|
logger.info(f"Modified: {event.src_path}, rebuilding...")
|
||||||
self.builder.build()
|
self.builder.build()
|
||||||
|
|
||||||
@override
|
@override
|
||||||
def on_created(self, event: FileSystemEvent):
|
def on_created(self, event: FileSystemEvent):
|
||||||
if not self._should_ignore(event):
|
if not self._should_ignore(event):
|
||||||
print(f"Modified: {event.src_path}, rebuilding...")
|
logger.info(f"Modified: {event.src_path}, rebuilding...")
|
||||||
self.builder.build()
|
self.builder.build()
|
||||||
|
|
||||||
|
|
||||||
def run_http_server(
|
def run_http_server(dir: Path, host: str = "localhost", port: int = 8000):
|
||||||
dir: Path, host: str = "localhost", port: int = 8000
|
|
||||||
):
|
|
||||||
os.chdir(dir)
|
os.chdir(dir)
|
||||||
handler = QuietHandler
|
handler = QuietHandler
|
||||||
httpd = ZonaServer(
|
httpd = ZonaServer(
|
||||||
server_address=(host, port), RequestHandlerClass=handler
|
server_address=(host, port), RequestHandlerClass=handler
|
||||||
)
|
)
|
||||||
print(f"Serving {dir} at http://{host}:{port}")
|
logger.info(f"Serving {dir} at http://{host}:{port}")
|
||||||
print(f"Exit with <c-c>")
|
logger.info(f"Exit with <c-c>")
|
||||||
httpd.serve_forever()
|
httpd.serve_forever()
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ def serve(
|
||||||
observer.start()
|
observer.start()
|
||||||
|
|
||||||
def shutdown_handler(_a: int, _b: FrameType | None):
|
def shutdown_handler(_a: int, _b: FrameType | None):
|
||||||
print("Shutting down...")
|
logger.info("Shutting down...")
|
||||||
observer.stop()
|
observer.stop()
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, shutdown_handler)
|
signal.signal(signal.SIGINT, shutdown_handler)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue