pub struct MeshReviewAnswerArgs {
pub request: String,
pub session: String,
pub verdict: String,
pub note: Option<String>,
pub query: MeshQueryArgs,
}Expand description
mesh review answer: the request being answered, the session answering it, and the
verdict. The verdict is one of three declared words rather than free text, so that a
requester can act on an answer without reading it, and clap refuses anything else at
the boundary; the note is where the reasoning goes.
use clap::Parser;
use majordomus_cli::cli::{Cli, Command, MeshCommand, MeshReviewAnswerArgs, MeshReviewCommand};
let cli = Cli::try_parse_from([
"majordomus", "mesh", "review", "answer", "a1b2c3d4-r1/rev-2", "--session", "s1",
"--verdict", "changes_requested", "--note", "the fold is not deterministic",
])
.unwrap();
let Command::Mesh(mesh) = cli.command else { panic!("expected `mesh`") };
let MeshCommand::Review(review) = mesh.command else { panic!("expected `review`") };
let MeshReviewCommand::Answer(answer) = review.command else { panic!("expected `answer`") };
let answer: MeshReviewAnswerArgs = answer;
assert_eq!(answer.request, "a1b2c3d4-r1/rev-2");
assert_eq!(answer.verdict, "changes_requested");
assert_eq!(answer.note.as_deref(), Some("the fold is not deterministic"));
// a verdict outside the three declared words is refused before anything runs
assert!(Cli::try_parse_from([
"majordomus", "mesh", "review", "answer", "a1b2c3d4-r1/rev-2", "--session", "s1",
"--verdict", "lgtm",
])
.is_err());Fields§
§request: StringThe request’s key, <stream>/<review>
session: StringThe answering session’s id within this runtime
verdict: StringWhat the reviewer decided
note: Option<String>The note
query: MeshQueryArgsWhere the repository is and how to answer.
Trait Implementations§
Source§impl Args for MeshReviewAnswerArgs
impl Args for MeshReviewAnswerArgs
Source§fn group_id() -> Option<Id>
fn group_id() -> Option<Id>
Report the [
ArgGroup::id][crate::ArgGroup::id] for this set of argumentsSource§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Append to [
Command] so it can instantiate self via
[FromArgMatches::update_from_arg_matches_mut] Read moreSource§impl Debug for MeshReviewAnswerArgs
impl Debug for MeshReviewAnswerArgs
Source§impl FromArgMatches for MeshReviewAnswerArgs
impl FromArgMatches for MeshReviewAnswerArgs
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
Assign values from
ArgMatches to self.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
Assign values from
ArgMatches to self.Auto Trait Implementations§
impl Freeze for MeshReviewAnswerArgs
impl RefUnwindSafe for MeshReviewAnswerArgs
impl Send for MeshReviewAnswerArgs
impl Sync for MeshReviewAnswerArgs
impl Unpin for MeshReviewAnswerArgs
impl UnsafeUnpin for MeshReviewAnswerArgs
impl UnwindSafe for MeshReviewAnswerArgs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more