diff --git a/clients/terminal/cli.py b/clients/terminal/cli.py index 8fe33ec..2057a27 100644 --- a/clients/terminal/cli.py +++ b/clients/terminal/cli.py @@ -14,7 +14,13 @@ from clients.terminal.ws_client import NaviWebSocketClient -@click.command(context_settings={"ignore_unknown_options": True, "allow_extra_args": True}) +@click.command( + context_settings={ + "ignore_unknown_options": True, + "allow_extra_args": True, + "help_option_names": ["-h", "--help"], + } +) @click.argument("prompt", required=False) @click.option("--base-url", default=None, help="Navi API base URL.") @click.option("--ws-url", default=None, help="Navi WebSocket URL (defaults to base-url).") diff --git a/tests/clients/test_terminal_client.py b/tests/clients/test_terminal_client.py index 78fe95a..c6ae206 100644 --- a/tests/clients/test_terminal_client.py +++ b/tests/clients/test_terminal_client.py @@ -82,6 +82,17 @@ assert result.exit_code == 0 assert "Navi Code" in result.output + def test_help_short_flag_shows_usage(self) -> None: + """-h must show help, not fall through to the prompt argument. + + Regression: with ignore_unknown_options=True, -h was not recognized as + the help flag and was sent to Navi as a prompt instead. + """ + runner = CliRunner() + result = runner.invoke(main, ["-h"]) + assert result.exit_code == 0 + assert "Navi Code" in result.output + def test_version_shows_version(self) -> None: runner = CliRunner() result = runner.invoke(main, ["--version"])