30 lines
864 B
Python
30 lines
864 B
Python
|
|
"""Default paths and profile resolution for CLI."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import os
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
DEFAULT_CANARY_PROFILE = "profile.sandbox-canary"
|
||
|
|
DEFAULT_COMPOSE_PROFILE = "profile.compose-e2e"
|
||
|
|
|
||
|
|
|
||
|
|
def repo_root() -> Path:
|
||
|
|
override = os.environ.get("SANDBOXER_REPO_ROOT")
|
||
|
|
if override:
|
||
|
|
return Path(override).expanduser().resolve()
|
||
|
|
return Path(__file__).resolve().parents[2]
|
||
|
|
|
||
|
|
|
||
|
|
def resolve_create_defaults(
|
||
|
|
profile: str | None,
|
||
|
|
inputs: dict[str, str],
|
||
|
|
) -> tuple[str, dict[str, str]]:
|
||
|
|
"""Apply default profile and repo per SAND-WP-0008-T06."""
|
||
|
|
resolved = dict(inputs)
|
||
|
|
user_repo = "repo" in resolved
|
||
|
|
if not user_repo:
|
||
|
|
resolved["repo"] = str(repo_root())
|
||
|
|
if profile is None:
|
||
|
|
profile = DEFAULT_COMPOSE_PROFILE if user_repo else DEFAULT_CANARY_PROFILE
|
||
|
|
return profile, resolved
|