Spaces:
Runtime error
Runtime error
File size: 2,529 Bytes
b91193c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #!/usr/bin/env python3
"""Bootstrap artifacts directory with challenge reference documents."""
from __future__ import annotations
import argparse
import logging
import shutil
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(PROJECT_ROOT))
from app.config import get_settings # noqa: E402
from app.logging_setup import configure_logging # noqa: E402
logger = logging.getLogger(__name__)
# Source files inside challenge/ → artifacts/
DOC_MAPPINGS: dict[str, str] = {
"job_description.txt": "challenge/_extracted/job_description.txt",
"submission_spec.txt": "challenge/_extracted/submission_spec.txt",
"redrob_signals_doc.txt": "challenge/_extracted/redrob_signals_doc.txt",
"README_challenge.txt": "challenge/_extracted/README.txt",
}
def copy_reference_docs(settings, force: bool = False) -> list[Path]:
"""Copy challenge reference documents into artifacts/."""
settings.ensure_artifacts_dir()
copied: list[Path] = []
for dest_name, src_rel in DOC_MAPPINGS.items():
src = PROJECT_ROOT / src_rel
dest = settings.artifacts_dir / dest_name
if not src.exists():
logger.warning("Source not found, skipping: %s", src)
continue
if dest.exists() and not force:
logger.info("Already exists, skipping: %s", dest.name)
copied.append(dest)
continue
shutil.copy2(src, dest)
logger.info("Copied %s -> %s", src.name, dest)
copied.append(dest)
return copied
def write_gitkeep(artifacts_dir: Path) -> None:
"""Ensure artifacts/.gitkeep exists for empty-dir tracking."""
gitkeep = artifacts_dir / ".gitkeep"
if not gitkeep.exists():
gitkeep.touch()
def main() -> int:
parser = argparse.ArgumentParser(description="Bootstrap artifacts directory.")
parser.add_argument(
"--force",
action="store_true",
help="Overwrite existing artifact documents.",
)
args = parser.parse_args()
settings = get_settings()
configure_logging(settings.log_level)
write_gitkeep(settings.artifacts_dir)
copied = copy_reference_docs(settings, force=args.force)
if not copied:
logger.error("No documents copied. Run from project root after extracting challenge docs.")
return 1
logger.info("Artifacts ready at %s (%d files)", settings.artifacts_dir, len(copied))
return 0
if __name__ == "__main__":
raise SystemExit(main())
|