Build immutable policy publication artifact
This commit is contained in:
parent
cac0301866
commit
e8035f3887
22 changed files with 2375 additions and 452 deletions
38
tools/check_currency.py
Normal file
38
tools/check_currency.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import datetime as dt
|
||||
from pathlib import Path
|
||||
|
||||
from build_site import _add_interval, load_manifest
|
||||
from render import split_frontmatter
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("manifest", type=Path)
|
||||
parser.add_argument("--as-of", type=dt.date.fromisoformat, default=dt.date.today())
|
||||
args = parser.parse_args()
|
||||
manifest_path = args.manifest.resolve()
|
||||
manifest = load_manifest(manifest_path)
|
||||
stale = 0
|
||||
for document in manifest["documents"]:
|
||||
repo = manifest_path.parent / manifest["repositories"][document["source_repo"]]["path"]
|
||||
source = (repo / document["source_path"]).resolve()
|
||||
meta, _markdown = split_frontmatter(source.read_text(encoding="utf-8"))
|
||||
reviewed = meta.get("last_reviewed") or meta.get("updated")
|
||||
interval = document.get("review_interval") or meta.get("review_interval")
|
||||
if not reviewed or not interval:
|
||||
print(f"UNDECLARED {document['id']}: review date/interval missing")
|
||||
stale += 1
|
||||
continue
|
||||
due = _add_interval(reviewed, interval)
|
||||
state = "STALE" if due < args.as_of else "current"
|
||||
print(f"{state} {document['id']}: reviewed {reviewed}, due {due}")
|
||||
stale += state == "STALE"
|
||||
return 1 if stale else 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Loading…
Add table
Add a link
Reference in a new issue