Исходный код core.configs.path
"""Рабочие директории клиента.
Пути считаются от ``BASE``, на диск ничего не пишется до явного вызова
``create_directories()`` — его делает ``configure_runtime()`` при старте
приложения. Раньше директории создавались валидатором, то есть побочным
эффектом импорта."""
from pathlib import Path
from pydantic import BaseModel
[документация]
class PathSettings(BaseModel):
"""Рабочие директории клиента под ``PATHS__BASE``."""
BASE: str = "/tmp/.soniks"
OUTPUT_DIR: str = "output"
COMPLETE_DIR: str = "complete"
INCOMPLETE_DIR: str = "incomplete"
# Последний полученный с портала документ состояния (конфигурация станции,
# координаты, канал релизов). Не под ``BASE``: тот в compose перекрывается
# на постоянный том отдельной переменной, а этот путь лежит на том же томе
# сам по себе. Станция без портала стартует на нём.
STATE_FILE: str = "/var/lib/soniks-client/desired-state.json"
@property
def base_path(self) -> Path:
return Path(self.BASE)
@property
def output_path(self) -> Path:
return self.base_path / self.OUTPUT_DIR
@property
def complete_path(self) -> Path:
return self.base_path / self.COMPLETE_DIR
@property
def incomplete_path(self) -> Path:
return self.base_path / self.INCOMPLETE_DIR
[документация]
def create_directories(self) -> None:
"""Создать рабочие директории на диске."""
paths_to_create = (
self.base_path,
self.output_path,
self.complete_path,
self.incomplete_path,
)
for path in paths_to_create:
try:
path.mkdir(parents=True, exist_ok=True)
except OSError as e:
raise RuntimeError(f"Ошибка при создании директории {path}") from e