diff options
Diffstat (limited to 'tools/cru-py/cru/paths.py')
-rw-r--r-- | tools/cru-py/cru/paths.py | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/tools/cru-py/cru/paths.py b/tools/cru-py/cru/paths.py deleted file mode 100644 index cdd97fe..0000000 --- a/tools/cru-py/cru/paths.py +++ /dev/null @@ -1,64 +0,0 @@ -import os -from pathlib import Path - -from .error import CruException - - -class ApplicationPathError(CruException): - def __init__(self, message: str, p: str | Path, *args, **kwargs): - super().__init__(message, *args, path=str(p), **kwargs) - - -def check_parents_dir(p: str | Path, /, must_exist: bool = False) -> bool: - p = Path(p) if isinstance(p, str) else p - for p in reversed(p.parents): - if not p.exists() and not must_exist: - return False - if not p.is_dir(): - raise ApplicationPathError("Parents path should be a dir.", p) - return True - - -class ApplicationPath: - def __init__(self, p: str | Path, is_dir: bool) -> None: - self._path = Path(p) if isinstance(p, str) else p - self._is_dir = is_dir - - @property - def path(self) -> Path: - return self._path - - @property - def is_dir(self) -> bool: - return self._is_dir - - def check_parents(self, must_exist: bool = False) -> bool: - return check_parents_dir(self._path.parent, must_exist) - - def check_self(self, must_exist: bool = False) -> bool: - if not self.check_parents(must_exist): - return False - if not self.path.exists(): - if not must_exist: - return False - raise ApplicationPathError("Mot exist.", self.path) - if self.is_dir: - if not self.path.is_dir(): - raise ApplicationPathError("Should be a directory, but not.", self.path) - else: - return False - else: - if not self.path.is_file(): - raise ApplicationPathError("Should be a file, but not.", self.path) - else: - return False - - def ensure(self, create_file: bool = False) -> None: - e = self.check_self(False) - if not e: - os.makedirs(self.path.parent, exist_ok=True) - if self.is_dir: - os.mkdir(self.path) - elif create_file: - with open(self.path, "w") as f: - f.write("") |