from __future__ import annotations

import os
from pathlib import Path

from src.errors import UserError
from src.ingest.ingest import ALLOWED_EXTENSIONS


def validate_inbox_dir(inbox_dir: Path) -> None:
    if not inbox_dir.exists():
        raise UserError(f"Inbox path does not exist: {inbox_dir}")
    if not inbox_dir.is_dir():
        raise UserError(f"Inbox path is not a directory: {inbox_dir}")


def iter_image_files(inbox_dir: Path) -> list[Path]:
    paths: list[Path] = []
    for root, _dirs, files in os.walk(inbox_dir):
        for name in files:
            path = Path(root) / name
            if path.suffix.lower() in ALLOWED_EXTENSIONS:
                paths.append(path)
    return sorted(paths)
