Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cli/unfollow: Use common DID / NID argument parser
Erik Kundt committed 6 months ago
commit 384ec316a0a6caab79369837319c01d3a55379ec
parent 1cc17075693170297302859e2b3fd3a0b81df7bd
1 file changed +3 -19
modified crates/radicle-cli/src/commands/unfollow/args.rs
@@ -1,9 +1,8 @@
use clap::Parser;

-
use thiserror::Error;
-

use radicle::node::NodeId;
-
use radicle::prelude::Did;
+

+
use crate::terminal as term;

pub(crate) const ABOUT: &str = "Unfollow a peer";

@@ -11,26 +10,11 @@ const LONG_ABOUT: &str = r#"
The `unfollow` command takes a Node ID, optionally in DID format,
and removes the follow policy for that peer."#;

-
#[derive(Debug, Error)]
-
#[error("invalid Node ID specified (Node ID parsing failed with: '{nid}', DID parsing failed with: '{did}'))")]
-
struct NodeIdParseError {
-
    did: radicle::identity::did::DidError,
-
    nid: radicle::crypto::PublicKeyError,
-
}
-

-
fn parse_nid(value: &str) -> Result<NodeId, NodeIdParseError> {
-
    value.parse::<Did>().map(NodeId::from).or_else(|did| {
-
        value
-
            .parse::<NodeId>()
-
            .map_err(|nid| NodeIdParseError { nid, did })
-
    })
-
}
-

#[derive(Debug, Parser)]
#[command(about = ABOUT, long_about = LONG_ABOUT, disable_version_flag = true)]
pub struct Args {
    /// Node ID (optionally in DID format) of the peer to unfollow
-
    #[arg(value_name = "NID", value_parser = parse_nid)]
+
    #[arg(value_name = "NID", value_parser = term::args::parse_nid)]
    pub(super) nid: NodeId,

    /// Verbose output