canonical / canonical/craft-cli

Provide limited choices for global arguments

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

Description

### What needs to get done

Global arguments should have a way to provide a limited set of choices or a type coercion for the application.

Two examples are the built-in `--verbosity`, which has a limited set of choices, and charmcraft's `--project-dir`, which provides a validator:

```python
verbosity = GlobalArgument(
"verbosity",
"option",
None,
"--verbosity",
"Set the verbosity level to 'quiet', 'brief', 'verbose', 'debug' or 'trace'",
choices=[mode.name.lower() for mode in EmitterMode],
)
project_dir = GlobalArgument(
"project_dir",
"option",
None,
"--project_dir",
"Set the base directory for the project.",
validator=pydantic.DirectoryPath,
)
```

`choices` matches argparse, `validator` is chosen instead of `type` since that's already used.

### Why it needs to get done

Right now an app needs to parse and provide error messages for this by itself, but `craft-cli` can often do this itself.

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.