canonical / canonical/craft-cli

Unhelpful error message when creating help if an argument doesn't have a help text

Open
#242 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
16
Forks
27
Avg merge
2d 1h
Merged PRs (30d)
12

Description

### Bug Description

If a command adds an argument without `help` text, the error raised isn't very useful. It should give a better error.

### To Reproduce

```
import sys

import craft_cli

class ExampleCommand(craft_cli.BaseCommand):

name = "example"
help_msg = overview = "unimportant"

def fill_parser(self, parser):
parser.add_argument("--do-something")

craft_cli.emit.init(craft_cli.EmitterMode.BRIEF, "example-app", "example app")

dispatcher = craft_cli.Dispatcher(
"example-app",
[craft_cli.CommandGroup("Example", [ExampleCommand])],
summary="summary"
)
dispatcher.pre_parse_args(sys.argv[1:])
dispatcher.load_command(None)
dispatcher.run()
```

`python ./example.py help example`

### part yaml

```shell
n/a
```

### Relevant log output

```shell
Traceback (most recent call last):
File "/home/lengau/Work/Code/charmcraft-2/charmcraft/application/commands/example.py", line 22, in
dispatcher.pre_parse_args(sys.argv[1:])
File "/home/lengau/Work/Code/charmcraft-2/.venv/lib/python3.11/site-packages/craft_cli/dispatcher.py", line 469, in pre_parse_args
help_text = self._get_requested_help(cmd_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lengau/Work/Code/charmcraft-2/.venv/lib/python3.11/site-packages/craft_cli/dispatcher.py", line 355, in _get_requested_help
return self._help_builder.get_command_help(command, command_options, output_format)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lengau/Work/Code/charmcraft-2/.venv/lib/python3.11/site-packages/craft_cli/helptexts.py", line 425, in get_command_help
textblocks = builder(usage, command.overview, options, other_command_names)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lengau/Work/Code/charmcraft-2/.venv/lib/python3.11/site-packages/craft_cli/helptexts.py", line 312, in _build_plain_command_help
option_lines.extend(_build_item_plain(title, text, max_title_len))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lengau/Work/Code/charmcraft-2/.venv/lib/python3.11/site-packages/craft_cli/helptexts.py", line 71, in _build_item_plain
first = f" {title:>{title_space}s}: {wrapped_lines[0]}"
~~~~~~~~~~~~~^^^
IndexError: list index out of range
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.