in tools/url-checker/url_checker.py [0:0]
def find_case_insensitive_path(path):
"""
Tries to find an existing path with case-insensitive matching.
Useful for systems where the filesystem is case-sensitive but the URLs might not match case.
Args:
path: The path to check
Returns:
The correct path if found with different case, None otherwise
"""
# If the path exists exactly as provided, no need to search
if os.path.exists(path):
return path
# Not found, try to match case-insensitively
dirname, basename = os.path.split(path)
# If the directory doesn't exist, we can't check its contents
if not os.path.isdir(dirname):
return None
try:
# Check if a case-insensitive match exists in the parent directory
for entry in os.listdir(dirname):
if entry.lower() == basename.lower():
return os.path.join(dirname, entry)
except (PermissionError, FileNotFoundError):
pass
return None