repo-cloner/repo_cloner/lib/repo_dir_structure.py
Václav Valíček 525c27795c
add has_config
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
2022-06-26 01:24:40 +02:00

78 lines
1.8 KiB
Python

import os.path
from repo_cloner.lib.dir_not_found_error import DirNotFoundError
from repo_cloner.lib.config_file_not_found_error import ConfigFileNotFoundError
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 __config_filename(self) -> str:
return os.path.join(self.conf_dir, "cloner.cfg")
@property
def base_dir_exists(self) -> bool:
if not os.path.isdir(self._base_dir):
raise DirNotFoundError(self._base_dir)
return True
@property
def conf_dir_exists(self) -> bool:
if not os.path.isdir(self._conf_dir):
raise DirNotFoundError(self._conf_dir)
return True
@property
def cache_dir_exists(self) -> bool:
if not os.path.isdir(self._cache_dir):
raise DirNotFoundError(self._cache_dir)
return True
@property
def repos_dir_exists(self) -> bool:
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
@property
def has_config(self) -> bool:
if not os.path.exists(self.__config_filename):
raise ConfigFileNotFoundError(self.__config_filename)
return True