@@ -38,6 +38,19 @@ async def async_get_files(folder: str) -> AsyncGenerator[Path, None]:
3838 yield file_path
3939
4040
41+ def _get_root (pattern : str ) -> str :
42+ sep = os .sep
43+ root = "."
44+ parts = pattern .split (sep )
45+ for i , part in enumerate (parts ):
46+ if "*" in part or "?" in part :
47+ root = sep .join (parts [:i ]) if i > 0 else "."
48+ break
49+ elif os .path .isdir (sep .join (parts [: i + 1 ])):
50+ root = sep .join (parts [: i + 1 ])
51+ return root
52+
53+
4154def expand_file_patterns (file_patterns : tuple [str , ...]) -> list [Path ]:
4255 """Expand file patterns to actual file paths.
4356
@@ -57,14 +70,7 @@ def expand_file_patterns(file_patterns: tuple[str, ...]) -> list[Path]:
5770 # Handle glob patterns by walking from root and filtering
5871 if "**" in pattern or "*" in pattern or "?" in pattern :
5972 # Extract root directory to walk from
60- root = "."
61- parts = pattern .split ("/" )
62- for i , part in enumerate (parts ):
63- if "*" in part or "?" in part :
64- root = "/" .join (parts [:i ]) if i > 0 else "."
65- break
66- elif os .path .isdir ("/" .join (parts [: i + 1 ])):
67- root = "/" .join (parts [: i + 1 ])
73+ root = _get_root (pattern )
6874
6975 # Get all files from root and filter by pattern
7076 if os .path .isdir (root ):
@@ -111,14 +117,7 @@ async def async_expand_file_patterns(
111117 # Handle glob patterns by walking from root and filtering
112118 if "**" in pattern or "*" in pattern or "?" in pattern :
113119 # Extract root directory to walk from
114- root = "."
115- parts = pattern .split ("/" )
116- for i , part in enumerate (parts ):
117- if "*" in part or "?" in part :
118- root = "/" .join (parts [:i ]) if i > 0 else "."
119- break
120- elif os .path .isdir ("/" .join (parts [: i + 1 ])):
121- root = "/" .join (parts [: i + 1 ])
120+ root = _get_root (pattern )
122121
123122 # Get all files from root and filter by pattern
124123 if os .path .isdir (root ):
0 commit comments