Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
Upcoming (TBD)
==============

Features
---------
* Respond to `-h` alone with the helpdoc.


1.66.0 (2026/03/21)
==============

Expand Down
9 changes: 8 additions & 1 deletion mycli/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2706,10 +2706,17 @@ def read_ssh_config(ssh_config_path: str):
return ssh_config


def filtered_sys_argv() -> list[str]:
args = sys.argv[1:]
if args == ['-h']:
args = ['--help']
return args


def main() -> int | None:
try:
result = click_entrypoint.main(
sys.argv[1:],
filtered_sys_argv(),
standalone_mode=False, # disable builtin exception handling
prog_name='mycli',
)
Expand Down
38 changes: 37 additions & 1 deletion test/test_main.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# type: ignore

from collections import namedtuple
from contextlib import redirect_stdout
from contextlib import redirect_stderr, redirect_stdout
import csv
import io
import os
Expand Down Expand Up @@ -153,6 +153,42 @@ def test_is_valid_connection_scheme_invalid(executor, capsys):
assert not is_valid


def test_filtered_sys_argv_maps_single_dash_h_to_help(monkeypatch):
import mycli.main

monkeypatch.setattr(mycli.main.sys, 'argv', ['mycli', '-h'])

assert mycli.main.filtered_sys_argv() == ['--help']


def test_filtered_sys_argv_preserves_host_option_usage(monkeypatch):
import mycli.main

monkeypatch.setattr(mycli.main.sys, 'argv', ['mycli', '-h', 'example.com'])

assert mycli.main.filtered_sys_argv() == ['-h', 'example.com']


def test_main_dash_h_and_help_have_equivalent_output(monkeypatch):
import mycli.main

def run_main(argv):
stdout = io.StringIO()
stderr = io.StringIO()
monkeypatch.setattr(mycli.main.sys, 'argv', argv)
with redirect_stdout(stdout), redirect_stderr(stderr):
result = mycli.main.main()
return result, stdout.getvalue(), stderr.getvalue()

dash_h_result, dash_h_stdout, dash_h_stderr = run_main(['mycli', '-h'])
dash_help_result, dash_help_stdout, dash_help_stderr = run_main(['mycli', '--help'])

assert dash_h_result == 0
assert dash_help_result == 0
assert dash_h_stdout == dash_help_stdout
assert dash_h_stderr == dash_help_stderr


@dbtest
def test_ssl_mode_on(executor, capsys):
runner = CliRunner()
Expand Down
Loading