refactor: cross-platform tool downloads, configurable infra dir and ACME email
- Make tool downloads platform-aware (darwin/linux, arm64/amd64) - Add buildctl to bundled tools - Add get_infra_dir() with config fallback for REPO_ROOT resolution - Add ACME email to sunbeam config (set/get) - Add REGISTRY_HOST_IP substitution in kustomize builds - Update Kratos admin identity schema to employee - Fix logs command to use production tunnel and context
This commit is contained in:
@@ -11,15 +11,18 @@ CONFIG_PATH = Path.home() / ".sunbeam.json"
|
||||
class SunbeamConfig:
|
||||
"""Sunbeam configuration with production host and infrastructure directory."""
|
||||
|
||||
def __init__(self, production_host: str = "", infra_directory: str = ""):
|
||||
def __init__(self, production_host: str = "", infra_directory: str = "",
|
||||
acme_email: str = ""):
|
||||
self.production_host = production_host
|
||||
self.infra_directory = infra_directory
|
||||
self.acme_email = acme_email
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""Convert configuration to dictionary for JSON serialization."""
|
||||
return {
|
||||
"production_host": self.production_host,
|
||||
"infra_directory": self.infra_directory,
|
||||
"acme_email": self.acme_email,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
@@ -28,6 +31,7 @@ class SunbeamConfig:
|
||||
return cls(
|
||||
production_host=data.get("production_host", ""),
|
||||
infra_directory=data.get("infra_directory", ""),
|
||||
acme_email=data.get("acme_email", ""),
|
||||
)
|
||||
|
||||
|
||||
@@ -71,3 +75,22 @@ def get_infra_directory() -> str:
|
||||
"""Get infrastructure directory from config."""
|
||||
config = load_config()
|
||||
return config.infra_directory
|
||||
|
||||
|
||||
def get_infra_dir() -> "Path":
|
||||
"""Infrastructure manifests directory as a Path.
|
||||
|
||||
Prefers the configured infra_directory; falls back to the package-relative
|
||||
path (works when running from the development checkout).
|
||||
"""
|
||||
from pathlib import Path
|
||||
configured = load_config().infra_directory
|
||||
if configured:
|
||||
return Path(configured)
|
||||
# Dev fallback: cli/sunbeam/config.py → parents[0]=cli/sunbeam, [1]=cli, [2]=monorepo root
|
||||
return Path(__file__).resolve().parents[2] / "infrastructure"
|
||||
|
||||
|
||||
def get_repo_root() -> "Path":
|
||||
"""Monorepo root directory (parent of the infrastructure directory)."""
|
||||
return get_infra_dir().parent
|
||||
|
||||
Reference in New Issue
Block a user