From 730ab8a25ec244fac527fcee20d351809389f9f8 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Wed, 4 Jun 2025 20:51:27 +0200 Subject: [PATCH] Chore(specific_machine_dir): use protocol to avoid direct dependency on machine class --- pkgs/clan-cli/clan_lib/dirs/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/clan-cli/clan_lib/dirs/__init__.py b/pkgs/clan-cli/clan_lib/dirs/__init__.py index 0c3c7de89..53ee4b990 100644 --- a/pkgs/clan-cli/clan_lib/dirs/__init__.py +++ b/pkgs/clan-cli/clan_lib/dirs/__init__.py @@ -4,17 +4,24 @@ import sys import urllib.parse from enum import Enum from pathlib import Path -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Protocol from clan_lib.errors import ClanError if TYPE_CHECKING: from clan_lib.flake import Flake - from clan_lib.machines.machines import Machine log = logging.getLogger(__name__) +class MachineSpecProtocol(Protocol): + @property + def flake(self) -> "Flake": ... + + @property + def name(self) -> str: ... + + def get_clan_flake_toplevel_or_env() -> Path | None: if clan_dir := os.environ.get("CLAN_DIR"): return Path(clan_dir) @@ -145,7 +152,7 @@ def machines_dir(flake: "Flake") -> Path: return Path(store_path) / "machines" -def specific_machine_dir(machine: "Machine") -> Path: +def specific_machine_dir(machine: "MachineSpecProtocol") -> Path: return machines_dir(machine.flake) / machine.name