refactor: reorganize the whole project layout
Build and Push to Registry / build (push) Successful in 8s

This commit is contained in:
2026-04-12 23:07:39 +02:00 Unverified
parent 1fdaa51604
commit 9d8019b35a
19 changed files with 32 additions and 26 deletions
+75
View File
@@ -0,0 +1,75 @@
from pathlib import Path
import yaml
from integrations.docker.models import DockerService
from integrations.docker.ports import _get_service_port
COMPOSE_NAMES = (
"compose.yml",
"compose.yaml",
"docker-compose.yml",
"docker-compose.yaml",
)
def get_visible_folders(directory: Path) -> list[Path]:
return [
p for p in Path(directory).iterdir() if p.is_dir() and not p.name.startswith(".")
]
def find_docker_compose(path: Path) -> tuple[dict, str] | None:
if not path or not path.is_dir():
return None
for name in COMPOSE_NAMES:
file = path / name
if file.is_file():
content = yaml.safe_load(file.read_text()) or {}
return content, file.name
return None
def get_services(folder: Path) -> list[DockerService] | None:
services: list[DockerService] = []
compose_data = find_docker_compose(folder)
if compose_data is None:
return None
docker_compose, _ = compose_data
compose_services = docker_compose.get("services") or {}
if not compose_services:
return None
for service_name, config in compose_services.items():
mappings = config.get("ports") if isinstance(config, dict) else None
if not isinstance(mappings, list) or not mappings:
continue
ports = [
p
for p in (_get_service_port(mapping) for mapping in mappings)
if p is not None
]
if not ports:
continue
services.append({"name": service_name, "ports": ports})
return services or None
def get_all_services(directory: str | Path) -> list[DockerService] | None:
path = Path(directory)
if not path.is_dir():
return None
services: list[DockerService] = []
for sub_folder in get_visible_folders(path):
sub_services = get_services(sub_folder)
if sub_services:
services.extend(sub_services)
return services or None