refactor(errors): introduce MissingEnvVarError for missing host env vars
lint / lint (push) Failing after 1m52s
test / unit (pull_request) Failing after 40s
test / integration (pull_request) Successful in 19s

Replace die()/RuntimeError at the point of detection with a typed
MissingEnvVarError, and catch it in the CLI dispatcher alongside
ManifestError. Library code stays free of stderr output; the CLI
renders all user-facing error lines in one place.

Sites updated: egress.egress_resolve_token_values (unset/empty token),
git_gate._provision_dynamic_key and revoke_git_gate_provisioned_keys
(missing forge_token_env), env.resolve_env (unset interpolated var).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 12:55:30 -04:00
parent 8e89227cb8
commit a8e880fad6
5 changed files with 41 additions and 13 deletions
+4 -2
View File
@@ -7,6 +7,7 @@ from __future__ import annotations
import sys
from ..errors import MissingEnvVarError
from ..log import Die, die, error
from ..manifest import ManifestError
from ._common import PROG
@@ -76,9 +77,10 @@ def main(argv: list[str] | None = None) -> int:
die(f"unknown command: {command}")
try:
return handler(rest) or 0
except MissingEnvVarError as e:
error(str(e))
return 1
except ManifestError as e:
# Manifest/config problems surface as a catchable exception;
# print the reason and exit non-zero (same UX die() used to give).
error(str(e))
return 1
except Die as e: