move dirmanager to its own file

This commit is contained in:
Daniel 2023-11-22 14:04:24 +01:00
parent 4534ee892b
commit d4e9a50ca6
2 changed files with 39 additions and 37 deletions

38
src/dirmanager.py Normal file
View file

@ -0,0 +1,38 @@
from pathlib import Path
class DirManager:
def __init__(self, root_tests_dir: Path, session_id: str):
# root test dir
self.root_tests_dir = root_tests_dir
self.session_id = session_id
self.get_all_dirs()
def get_all_dirs(self):
self.session_dir = self.root_tests_dir / f"test-{self.session_id}"
self.session_sub_dirs = self.get_subdirs(self.session_dir)
def create_all_dirs(self):
self.create_dirs(self.root_tests_dir, exist_ok=True)
self.create_dirs(self.session_dir)
self.create_dirs(self.session_sub_dirs)
def get_subdirs(self, session_dir: Path):
return {
"records": session_dir / Path("records"),
"states": session_dir / Path("states"),
"results": session_dir / Path("results"),
}
@staticmethod
def create_dirs(dirs: Path | list[Path] | dict[str, Path], exist_ok=False):
match dirs:
case Path():
dirs.mkdir(exist_ok=exist_ok)
case list():
for d in dirs:
d.mkdir(exist_ok=exist_ok)
case dict():
for d in dirs.values():
d.mkdir(exist_ok=exist_ok)

View file

@ -2,6 +2,7 @@ from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Protocol from typing import Protocol
from dirmanager import DirManager
from dotenv import dotenv_values from dotenv import dotenv_values
from icecream import ic from icecream import ic
from tests_authentik.runner_authentik import RunnerAuthentik from tests_authentik.runner_authentik import RunnerAuthentik
@ -72,42 +73,5 @@ class Wrapper:
return current_datetime.strftime("%Y-%m-%d-%H-%M-%S") return current_datetime.strftime("%Y-%m-%d-%H-%M-%S")
class DirManager:
def __init__(self, root_tests_dir: Path, session_id: str):
# root test dir
self.root_tests_dir = root_tests_dir
self.session_id = session_id
self.get_all_dirs()
def get_all_dirs(self):
self.session_dir = self.root_tests_dir / f"test-{self.session_id}"
self.session_sub_dirs = self.get_subdirs(self.session_dir)
def create_all_dirs(self):
self.create_dirs(self.root_tests_dir, exist_ok=True)
self.create_dirs(self.session_dir)
self.create_dirs(self.session_sub_dirs)
def get_subdirs(self, session_dir: Path):
return {
"records": session_dir / Path("records"),
"states": session_dir / Path("states"),
"results": session_dir / Path("results"),
}
@staticmethod
def create_dirs(dirs: Path | list[Path] | dict[str, Path], exist_ok=False):
match dirs:
case Path():
dirs.mkdir(exist_ok=exist_ok)
case list():
for d in dirs:
d.mkdir(exist_ok=exist_ok)
case dict():
for d in dirs.values():
d.mkdir(exist_ok=exist_ok)
if __name__ == "__main__": if __name__ == "__main__":
t = Wrapper(ENV_FILES) t = Wrapper(ENV_FILES)