diff --git a/hermes_cli/config.py b/hermes_cli/config.py index 492d00aec..7a932d9e4 100644 --- a/hermes_cli/config.py +++ b/hermes_cli/config.py @@ -821,7 +821,7 @@ def migrate_config(interactive: bool = True, quiet: bool = False) -> Dict[str, A print(f" ✓ Saved {name}") print() else: - print(" Set later with: hermes config set KEY VALUE") + print(" Set later with: hermes config set ") # Check for missing config fields missing_config = get_missing_config_fields() @@ -1265,7 +1265,7 @@ def show_config(): print() print(color("─" * 60, Colors.DIM)) print(color(" hermes config edit # Edit config file", Colors.DIM)) - print(color(" hermes config set KEY VALUE", Colors.DIM)) + print(color(" hermes config set ", Colors.DIM)) print(color(" hermes setup # Run setup wizard", Colors.DIM)) print() @@ -1391,7 +1391,7 @@ def config_command(args): key = getattr(args, 'key', None) value = getattr(args, 'value', None) if not key or not value: - print("Usage: hermes config set KEY VALUE") + print("Usage: hermes config set ") print() print("Examples:") print(" hermes config set model anthropic/claude-sonnet-4") @@ -1506,7 +1506,7 @@ def config_command(args): print("Available commands:") print(" hermes config Show current configuration") print(" hermes config edit Open config in editor") - print(" hermes config set K V Set a config value") + print(" hermes config set Set a config value") print(" hermes config check Check for missing/outdated config") print(" hermes config migrate Update config with new options") print(" hermes config path Show config file path") diff --git a/hermes_cli/setup.py b/hermes_cli/setup.py index 4a27339ce..7e0a99983 100644 --- a/hermes_cli/setup.py +++ b/hermes_cli/setup.py @@ -602,7 +602,7 @@ def _print_setup_summary(config: dict, hermes_home): print( f" {color('hermes config edit', Colors.GREEN)} Open config in your editor" ) - print(f" {color('hermes config set KEY VALUE', Colors.GREEN)}") + print(f" {color('hermes config set ', Colors.GREEN)}") print(f" Set a specific value") print() print(f" Or edit the files directly:") diff --git a/tests/hermes_cli/test_placeholder_usage.py b/tests/hermes_cli/test_placeholder_usage.py new file mode 100644 index 000000000..3479d8f57 --- /dev/null +++ b/tests/hermes_cli/test_placeholder_usage.py @@ -0,0 +1,48 @@ +"""Tests for CLI placeholder text in config/setup output.""" + +import os +from argparse import Namespace +from unittest.mock import patch + +import pytest + +from hermes_cli.config import config_command, show_config +from hermes_cli.setup import _print_setup_summary + + +def test_config_set_usage_marks_placeholders(capsys): + args = Namespace(config_command="set", key=None, value=None) + + with pytest.raises(SystemExit) as exc: + config_command(args) + + assert exc.value.code == 1 + out = capsys.readouterr().out + assert "Usage: hermes config set " in out + + +def test_config_unknown_command_help_marks_placeholders(capsys): + args = Namespace(config_command="wat") + + with pytest.raises(SystemExit) as exc: + config_command(args) + + assert exc.value.code == 1 + out = capsys.readouterr().out + assert "hermes config set Set a config value" in out + + +def test_show_config_marks_placeholders(tmp_path, capsys): + with patch.dict(os.environ, {"HERMES_HOME": str(tmp_path)}): + show_config() + + out = capsys.readouterr().out + assert "hermes config set " in out + + +def test_setup_summary_marks_placeholders(tmp_path, capsys): + with patch.dict(os.environ, {"HERMES_HOME": str(tmp_path)}): + _print_setup_summary({"tts": {"provider": "edge"}}, tmp_path) + + out = capsys.readouterr().out + assert "hermes config set " in out