#!/usr/bin/env python3 """ Touch files that must pass Sphinx nit-picky mode so they are rebuilt and we can catch regressions. """ from pathlib import Path wrong_directory_msg = "Must run this script from the repo root" assert Path("Doc").exists() and Path("Doc").is_dir(), wrong_directory_msg # Exclude these whether they're dirty or clean, # because they trigger a rebuild of dirty files. EXCLUDE_FILES = { Path("Doc/whatsnew/changelog.rst"), } # Subdirectories of Doc/ to exclude. EXCLUDE_SUBDIRS = { ".env", ".venv", "env", "includes", "venv", } ALL_RST = { rst for rst in Path("Doc/").rglob("*.rst") if rst.parts[1] not in EXCLUDE_SUBDIRS } with Path("Doc/tools/.nitignore").open() as clean_files: DIRTY = { Path(filename.strip()) for filename in clean_files if filename.strip() and not filename.startswith("#") } CLEAN = ALL_RST - DIRTY - EXCLUDE_FILES print("Touching:") for filename in sorted(CLEAN): print(filename) filename.touch() print(f"Touched {len(CLEAN)} files")