Source code for minos.cli.pathlib

from pathlib import (
    Path,
)

MINOS_PROJECT_FILENAME = ".minos-project.yaml"
MINOS_MICROSERVICE_FILENAME = ".minos-microservice.yaml"
MICROSERVICES_DIRECTORY = "microservices"


[docs]def get_project_target_directory(path: Path) -> Path: """Get the target directory for a project. :return: A ``Path`` instance. """ current = path while current != current.parent: if (current / MINOS_PROJECT_FILENAME).exists(): return current else: current = current.parent raise ValueError(f"Unable to find the target directory from {path} origin.")
[docs]def get_microservice_target_directory(path: Path, name: str) -> Path: """Get the target directory for a microservice. :param path: The starting path. :param name: The name of the microservice. :return: A ``Path`` instance. """ current = path while current != current.parent: if (current / MINOS_MICROSERVICE_FILENAME).exists(): return current if (current / MINOS_PROJECT_FILENAME).exists(): target = current / MICROSERVICES_DIRECTORY / name if (target / MINOS_MICROSERVICE_FILENAME).exists(): return target current = current.parent raise ValueError(f"Unable to find the target directory for {name} from {path} origin.")
[docs]def get_microservices_directory(path: Path) -> Path: project_directory = get_project_target_directory(path) return project_directory / MICROSERVICES_DIRECTORY