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