import os.path from repo_cloner.lib.dir_not_found_error import DirNotFoundError class RepoDirStructure(): _base_dir: str = "" _conf_dir: str = "" _cache_dir: str = "" _repos_dir: str = "" def __init__(self, base_dir: str): self._base_dir = base_dir self._conf_dir = os.path.join(self._base_dir, "config") self._cache_dir = os.path.join(self._base_dir, "cache") self._repos_dir = os.path.join(self._base_dir, "repos") @property def base_dir_exists(self): if not os.path.isdir(self._base_dir): raise DirNotFoundError(self._base_dir) return True @property def conf_dir_exists(self): if not os.path.isdir(self._conf_dir): raise DirNotFoundError(self._conf_dir) return True @property def cache_dir_exists(self): if not os.path.isdir(self._cache_dir): raise DirNotFoundError(self._cache_dir) return True @property def repos_dir_exists(self): if not os.path.isdir(self._repos_dir): raise DirNotFoundError(self._repos_dir) return True @property def dirs_exist(self) -> bool: return all( [ self.base_dir_exists, self.conf_dir_exists, self.cache_dir_exists, self.repos_dir_exists, ] ) @property def base_dir(self) -> str: return self._base_dir @property def cache_dir(self) -> str: return self._cache_dir @property def conf_dir(self) -> str: return self._conf_dir @property def repos_dir(self) -> str: return self._repos_dir