diff --git a/.bin/Scripts/functions/ufd.py b/.bin/Scripts/functions/ufd.py index 441b4770..9aeb1b3d 100644 --- a/.bin/Scripts/functions/ufd.py +++ b/.bin/Scripts/functions/ufd.py @@ -4,6 +4,33 @@ import pathlib from functions.common import * +def case_insensitive_search(path, item): + """Search path for item case insensitively, returns str.""" + if os.path.exists('{}/{}'.format(path, item)): + # Easy mode + return '{}/{}'.format(path, item) + + # Check all items in dir + for entry in os.scandir(path): + if re.match(entry.name, item, re.IGNORECASE): + return '{}/{}'.format(path, entry.name) + + # If we get here the item wasn't found + raise FileNotFoundError('{}/{}'.format(path, item)) + + +def find_source_item(source_dir, item): + """Find item relative to source dir, returns str.""" + path = source_dir + if item.startswith('/'): + item = item[1:] + + for part in item.split('/'): + path = case_insensitive_search(path, part) + + return path + + def get_full_path(item): """Get full path to item, returns pathlib.Path obj.""" path_obj = pathlib.Path(item).resolve()