Source code for glob_linters.utils.io

"""IO functions"""

import logging
import os
from pathlib import Path

from glob_linters.utils import settings

logger = logging.getLogger(__name__)





[docs]def scan(target_dirs: list[str], suffixes: list[str]) -> dict[str, list[str]]: """Scan directories to obtain target files Parameters ---------- target_dirs : list[str] Directories to be scanned suffix : list[str] Expected file suffix Returns ------- dict[str, list[str]] Absolute paths of target files """ target_files: dict[str, list[str]] = {s: [] for s in suffixes} target_dirs = [os.path.abspath(target_dir) for target_dir in target_dirs] logger.debug("Scanning directory: %s", target_dirs) for target_dir in target_dirs: for dirpath, _, filenames in os.walk(target_dir): for filename in filenames: f_path = Path(os.path.join(dirpath, filename)) logger.debug("Found file: %s", f_path) if f_path.suffix in suffixes: logger.debug("Found qualified file: %s", f_path) target_files[f_path.suffix].append(str(f_path)) return target_files