Skip to main content

caretta_sync_cli/cli/args/
verification_identifier.rs

1use clap::Args;
2use iroh::PublicKey;
3use iroh_tickets::endpoint::EndpointTicket;
4use mtid::Dtid;
5
6use crate::cli::DeviceIdentifierArgs;
7
8/// Specify target authorization_request
9#[derive(Args, Clone, Debug)]
10#[group(multiple = false, required = true)]
11pub struct VerificationIdentifierArgs {
12    #[arg(short, long)]
13    verificaton_id: Option<Dtid>,
14    #[command(flatten)]
15    device: DeviceIdentifierArgs,
16}
17
18impl From<VerificationIdentifierArgs>
19    for caretta_sync_core::proto::api::device_verification::Identifier
20{
21    fn from(value: VerificationIdentifierArgs) -> Self {
22        use caretta_sync_core::proto::api::device_verification::identifier::Value;
23        Self {
24            value: Some(match (value.verificaton_id, value.device) {
25                (Some(x), _) => Value::VerificationId(x.into()),
26                (None, x) => Value::Device(x.into()),
27                (_, _) => unreachable!("The parsed argument must be one."),
28            }),
29        }
30    }
31}