refactor(line,simplex): table-drive setup wizards

This commit is contained in:
Teknium
2026-09-02 23:21:54 -07:00
parent 9e9a8f1d36
commit e839edd25f
2 changed files with 24 additions and 22 deletions
+13 -14
View File
@@ -870,10 +870,8 @@ def _env_enablement() -> Optional[Dict[str, Any]]:
return None
seeded: Dict[str, Any] = {}
if os.getenv("LINE_PORT"):
try:
with contextlib.suppress(ValueError):
seeded["port"] = int(os.environ["LINE_PORT"])
except ValueError:
pass
for env, key in (("LINE_HOST", "host"), ("LINE_PUBLIC_URL", "public_url"), ("LINE_HOME_CHANNEL", "home_channel")):
if os.getenv(env):
seeded[key] = os.environ[env]
@@ -901,19 +899,25 @@ async def _standalone_send(
return {"error": str(exc)}
_SETUP_PROMPTS = ( # (env var, prompt, masked)
("LINE_CHANNEL_ACCESS_TOKEN", "Channel access token", True),
("LINE_CHANNEL_SECRET", "Channel secret", True),
("LINE_PUBLIC_URL", "Public HTTPS base URL (optional, e.g. https://my-tunnel.example.com)", False),
("LINE_ALLOWED_USERS", "Allowed user IDs (comma-separated; blank=skip)", False),
)
def interactive_setup() -> None:
"""Minimal stdin wizard for ``hermes setup line`` (writes ``~/.hermes/.env``)."""
print(
"\nLINE Messaging API setup\n------------------------\n"
"Create a Messaging API channel at https://developers.line.biz/console/\nthen copy the values below.\n"
)
print("\nLINE Messaging API setup\n------------------------\n"
"Create a Messaging API channel at https://developers.line.biz/console/\nthen copy the values below.\n")
try:
from hermes_cli.config import get_env_value as _get_env, save_env_value as _set_env
except ImportError:
print("hermes_cli.config not available; set LINE_* vars manually in ~/.hermes/.env")
return
def _prompt(var: str, prompt: str, *, secret: bool = False) -> None:
for var, prompt, secret in _SETUP_PROMPTS:
existing = _get_env(var) if callable(_get_env) else None
suffix = " [keep current]" if existing else ""
try:
@@ -924,14 +928,9 @@ def interactive_setup() -> None:
value = input(f"{prompt}{suffix}: ").strip()
except (EOFError, KeyboardInterrupt):
print()
return
continue
if value:
_set_env(var, value)
_prompt("LINE_CHANNEL_ACCESS_TOKEN", "Channel access token", secret=True)
_prompt("LINE_CHANNEL_SECRET", "Channel secret", secret=True)
_prompt("LINE_PUBLIC_URL", "Public HTTPS base URL (optional, e.g. https://my-tunnel.example.com)")
_prompt("LINE_ALLOWED_USERS", "Allowed user IDs (comma-separated; blank=skip)")
print("Done. Set the webhook URL in the LINE console to <your-public-url>/line/webhook and enable 'Use webhook'.")
+11 -8
View File
@@ -650,6 +650,15 @@ async def _standalone_send(
return {"error": f"SimpleX send failed: {e}"}
_SETUP_PROMPTS = (
("SIMPLEX_WS_URL", "Daemon WebSocket URL (default ws://127.0.0.1:5225)"),
("SIMPLEX_ALLOWED_USERS", "Allowed contactIds or display names (comma-separated; blank=skip)"),
("SIMPLEX_GROUP_ALLOWED", "Allowed group IDs (comma-separated, or '*' for any; blank=disable groups)"),
("SIMPLEX_AUTO_ACCEPT", "Auto-accept incoming contact requests? (true/false, default true)"),
("SIMPLEX_HOME_CHANNEL", "Home channel contact/group ID (or empty)"),
)
def interactive_setup() -> None:
"""Minimal stdin wizard for ``hermes setup gateway`` → SimpleX; writes ``~/.hermes/.env``."""
print(
@@ -662,22 +671,16 @@ def interactive_setup() -> None:
print("hermes_cli.config not available; set SIMPLEX_* vars manually in ~/.hermes/.env")
return
def _prompt(var: str, prompt: str) -> None:
for var, prompt in _SETUP_PROMPTS:
existing = get_env_value(var) if callable(get_env_value) else None
suffix = " [keep current]" if existing else ""
try:
value = input(f"{prompt}{suffix}: ").strip()
except (EOFError, KeyboardInterrupt):
print()
return
continue
if value:
save_env_value(var, value)
_prompt("SIMPLEX_WS_URL", "Daemon WebSocket URL (default ws://127.0.0.1:5225)")
_prompt("SIMPLEX_ALLOWED_USERS", "Allowed contactIds or display names (comma-separated; blank=skip)")
_prompt("SIMPLEX_GROUP_ALLOWED", "Allowed group IDs (comma-separated, or '*' for any; blank=disable groups)")
_prompt("SIMPLEX_AUTO_ACCEPT", "Auto-accept incoming contact requests? (true/false, default true)")
_prompt("SIMPLEX_HOME_CHANNEL", "Home channel contact/group ID (or empty)")
print("Done. Make sure the simplex-chat daemon is running before starting the gateway.")