Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cli: Add module for common argument types
Erik Kundt committed 6 months ago
commit 22c565378950f2966a43b8f5b6c47b83ca62009c
parent 384c506489dd6a4cbf8c80b0370b2b2a8de7835b
2 files changed +20 -0
added crates/radicle-cli/src/args.rs
@@ -0,0 +1,19 @@
+
use thiserror::Error;
+

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

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

+
pub(crate) 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 })
+
    })
+
}
modified crates/radicle-cli/src/lib.rs
@@ -8,4 +8,5 @@ pub mod pager;
pub mod project;
pub mod terminal;

+
mod args;
mod warning;