feat: update somethings
This commit is contained in:
54
src/common.py
Normal file
54
src/common.py
Normal file
@@ -0,0 +1,54 @@
|
||||
from pathlib import Path
|
||||
from logger import LOGGER
|
||||
|
||||
|
||||
class BaGuException(Exception):
|
||||
"""The exception raised by this project."""
|
||||
pass
|
||||
|
||||
|
||||
|
||||
def resolve_resource(tobe_resolved: str, resource_dir: Path) -> Path | None:
|
||||
"""
|
||||
Resolve given path in resource directory or current work directory.
|
||||
|
||||
This function will use absolute path directly if it is and it is exist.
|
||||
If not, this function will try to resolve it in resource directory first,
|
||||
and then in current work directory.
|
||||
|
||||
:param tobe_resolved: The path to be resolved.
|
||||
:param resource_dir: The resource directory.
|
||||
:return: The resolved path if resolved, otherwise None.
|
||||
"""
|
||||
tobe_resolved_path = Path(tobe_resolved)
|
||||
LOGGER.debug(f'Resolving {tobe_resolved_path} ...')
|
||||
|
||||
# Return absolute path directly
|
||||
if tobe_resolved_path.is_absolute():
|
||||
if tobe_resolved_path.is_file():
|
||||
LOGGER.debug(f'Resolved {tobe_resolved_path}')
|
||||
return tobe_resolved_path
|
||||
else:
|
||||
LOGGER.debug(f'{tobe_resolved_path} is absolute path but not a file.')
|
||||
return None
|
||||
|
||||
# Resolve it in resource directory first
|
||||
resource_dir_path = Path(resource_dir).resolve()
|
||||
resolved = resource_dir_path / tobe_resolved_path
|
||||
if resolved.is_file():
|
||||
LOGGER.debug(f'Resolved {resolved}')
|
||||
return resolved
|
||||
else:
|
||||
LOGGER.debug(f'Resolved failed in resource path because {resolved} is not a file.')
|
||||
|
||||
# Resolve it in work directory
|
||||
cwd_path = Path.cwd().resolve()
|
||||
resolved = cwd_path / tobe_resolved_path
|
||||
if resolved.is_file():
|
||||
LOGGER.debug(f'Resolved {resolved}')
|
||||
return resolved
|
||||
else:
|
||||
LOGGER.debug(f'Resolved failed in current work directory because {resolved} is not a file.')
|
||||
|
||||
# Not resolved
|
||||
return None
|
||||
Reference in New Issue
Block a user