From 2300849fdcce104e868b76f69ca63ac65c5d4a03 Mon Sep 17 00:00:00 2001 From: Jordan Wages Date: Sat, 2 Aug 2025 03:12:59 -0500 Subject: [PATCH] Place generated marker in output directory --- scripts/generate_reports.py | 13 +++++++++++++ tests/test_reports.py | 22 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/scripts/generate_reports.py b/scripts/generate_reports.py index 265da2d..a45e4eb 100644 --- a/scripts/generate_reports.py +++ b/scripts/generate_reports.py @@ -15,6 +15,7 @@ DB_PATH = Path("database/ngxstat.db") OUTPUT_DIR = Path("output") TEMPLATE_DIR = Path("templates") REPORT_CONFIG = Path("reports.yml") +GENERATED_MARKER = OUTPUT_DIR / "generated.txt" # Mapping of interval names to SQLite strftime formats. These strings are # substituted into report queries whenever the special ``{bucket}`` token is @@ -30,6 +31,18 @@ INTERVAL_FORMATS = { app = typer.Typer(help="Generate aggregated log reports") +@app.callback() +def _cli_callback(ctx: typer.Context) -> None: + """Register post-command hook to note generation time.""" + + def _write_marker() -> None: + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + timestamp = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S") + GENERATED_MARKER.write_text(f"{timestamp}\n") + + ctx.call_on_close(_write_marker) + + def _get_domains() -> List[str]: """Return a sorted list of unique domains from the logs table.""" conn = sqlite3.connect(DB_PATH) diff --git a/tests/test_reports.py b/tests/test_reports.py index f9399df..fa8f0a0 100644 --- a/tests/test_reports.py +++ b/tests/test_reports.py @@ -2,8 +2,10 @@ import sqlite3 from pathlib import Path import json import sys +from datetime import datetime import pytest +from typer.testing import CliRunner REPO_ROOT = Path(__file__).resolve().parents[1] sys.path.append(str(REPO_ROOT)) @@ -199,9 +201,23 @@ def test_generate_root_index(tmp_path, sample_reports, monkeypatch): assert '