Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cli: implement the rad remote list command
Vincenzo Palazzo committed 3 years ago
commit 027ccb943e75ce289d2f4e7a069703d89def6d53
parent 33547c9c3c13db20ee72c1446c878b3df651179c
1 file changed +35 -0
added radicle-cli/src/commands/remote/list.rs
@@ -0,0 +1,35 @@
+
use radicle_term::{Element, Table};
+

+
use crate::git;
+
use crate::terminal as term;
+

+
#[inline]
+
fn format_direction(d: &git::Direction) -> String {
+
    match d {
+
        git::Direction::Fetch => "fetch".to_owned(),
+
        git::Direction::Push => "push".to_owned(),
+
    }
+
}
+

+
pub fn run(repo: &git::Repository) -> anyhow::Result<()> {
+
    let mut table = Table::default();
+
    let remotes = git::rad_remotes(repo)?;
+
    for r in remotes {
+
        for spec in r.refspecs() {
+
            let dir = spec.direction();
+
            let url = r.url.clone();
+
            let name = r.name.clone();
+
            let nid_row = url.namespace.map_or(
+
                term::format::dim("This is the canonical upstream".to_string()),
+
                |namespace| term::format::highlight(namespace.to_string()),
+
            );
+
            table.push([
+
                term::format::badge_positive(format_direction(&dir)),
+
                term::format::highlight(name.to_owned()),
+
                nid_row,
+
            ]);
+
        }
+
    }
+
    table.print();
+
    Ok(())
+
}