def _get_excludes(path: Path, excludes: List[str]) -> Callable: path = path.absolute() pathspec = PathSpec.from_lines("gitwildmatch", excludes) def match(p: Path): path_str = str(p.absolute().relative_to(path)) return pathspec.match_file(path_str) return match
def _get_gitignore(path: Path) -> Optional[Callable]: path = path.absolute() ignore_file = path / ".gitignore" if ignore_file.is_file(): with ignore_file.open("r") as f: pathspec = PathSpec.from_lines("gitwildmatch", f.readlines()) def match(p: Path): path_str = str(p.absolute().relative_to(path)) return pathspec.match_file(path_str) return match else: return None