cli: optional message for issue comments

The `From<String> for Message` implementation has an interesting
interaction between `clap` and how `Message` can be used from the
command line.

Note that `FromStr` is not implemented for `Message` – which usually
what is to be expected for use with `clap`, but in fact, `clap` also
allows `From<String>`.

This would make `Message` be a required option when using `rad issue comment`.

It is not possible to use `default_value_t` because that required an
implementation of `Display`, which in this case we do not want to
implement. Trying to use `default_value = "Message::Edit"` also would
not work – it uses that as the text.

So, the solution is to mark it as optional, and default to
`Message::Edit` when it is not specified.
This commit is contained in:
Fintan Halpenny 2026-02-03 08:56:49 +00:00 committed by Lorenz Leutgeb
parent c33c26fa78
commit eccfd6baf3
1 changed files with 2 additions and 1 deletions

View File

@ -310,7 +310,7 @@ pub(crate) struct CommentArgs {
/// The body of the comment
#[arg(long, short)]
#[arg(value_name = "MESSAGE")]
message: Message,
message: Option<Message>,
/// Optionally, the comment to reply to. If not specified, the comment
/// will be in reply to the issue itself
@ -441,6 +441,7 @@ impl From<CommentArgs> for CommentAction {
edit,
}: CommentArgs,
) -> Self {
let message = message.unwrap_or(Message::Edit);
match (reply_to, edit) {
(Some(_), Some(_)) => {
unreachable!("the argument '--reply-to' cannot be used with '--edit'")