Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
REVIEW: Move args to module
◌ CI pending Erik Kundt committed 7 months ago
commit f271896f932df8082d7c27a02b462834294fcdb3
parent 7fc1eecb7f3f589e87f2291004d848d469e8ad87
2 pending (2 total) View logs
2 files changed +50 -45
modified crates/radicle-cli/src/commands/block.rs
@@ -1,54 +1,13 @@
-
use clap::Parser;
-
use thiserror::Error;
+
mod args;

use radicle::node::policy::Policy;
-
use radicle::prelude::{NodeId, RepoId};

use crate::terminal as term;

-
pub(crate) const ABOUT: &str = "Block repositories or nodes from being seeded or followed";
-

-
#[derive(Clone, Debug)]
-
pub enum Target {
-
    Node(NodeId),
-
    Repo(RepoId),
-
}
-

-
#[derive(Debug, Error)]
-
#[error("invalid repository or node specified (RID parsing failed with: '{repo}', NID parsing failed with: '{node}'))")]
-
pub struct ParseTargetError {
-
    repo: radicle::identity::IdError,
-
    node: radicle::crypto::PublicKeyError,
-
}
-

-
impl std::str::FromStr for Target {
-
    type Err = ParseTargetError;
-

-
    fn from_str(val: &str) -> Result<Self, Self::Err> {
-
        val.parse::<RepoId>().map(Target::Repo).or_else(|repo| {
-
            val.parse::<NodeId>()
-
                .map(Target::Node)
-
                .map_err(|node| ParseTargetError { repo, node })
-
        })
-
    }
-
}
+
pub use args::Args;
+
use args::Target;

-
impl std::fmt::Display for Target {
-
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-
        match self {
-
            Self::Node(nid) => nid.fmt(f),
-
            Self::Repo(rid) => rid.fmt(f),
-
        }
-
    }
-
}
-

-
#[derive(Parser, Debug)]
-
#[command(about = ABOUT, disable_version_flag = true)]
-
pub struct Args {
-
    /// A Repository ID or Node ID to block from seeding or following (respectively)
-
    #[arg(value_name = "RID|NID")]
-
    pub target: Target,
-
}
+
pub(crate) const ABOUT: &str = "Block repositories or nodes from being seeded or followed";

pub fn run(args: Args, ctx: impl term::Context) -> anyhow::Result<()> {
    let profile = ctx.profile()?;
added crates/radicle-cli/src/commands/block/args.rs
@@ -0,0 +1,46 @@
+
use clap::Parser;
+
use thiserror::Error;
+

+
use radicle::prelude::{NodeId, RepoId};
+

+
#[derive(Clone, Debug)]
+
pub enum Target {
+
    Node(NodeId),
+
    Repo(RepoId),
+
}
+

+
#[derive(Debug, Error)]
+
#[error("invalid repository or node specified (RID parsing failed with: '{repo}', NID parsing failed with: '{node}'))")]
+
pub struct ParseTargetError {
+
    repo: radicle::identity::IdError,
+
    node: radicle::crypto::PublicKeyError,
+
}
+

+
impl std::str::FromStr for Target {
+
    type Err = ParseTargetError;
+

+
    fn from_str(val: &str) -> Result<Self, Self::Err> {
+
        val.parse::<RepoId>().map(Target::Repo).or_else(|repo| {
+
            val.parse::<NodeId>()
+
                .map(Target::Node)
+
                .map_err(|node| ParseTargetError { repo, node })
+
        })
+
    }
+
}
+

+
impl std::fmt::Display for Target {
+
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+
        match self {
+
            Self::Node(nid) => nid.fmt(f),
+
            Self::Repo(rid) => rid.fmt(f),
+
        }
+
    }
+
}
+

+
#[derive(Parser, Debug)]
+
#[command(about = super::ABOUT, disable_version_flag = true)]
+
pub struct Args {
+
    /// A Repository ID or Node ID to block from seeding or following (respectively)
+
    #[arg(value_name = "RID|NID")]
+
    pub target: Target,
+
}