cli: implement the rad remote list command
Implementing the `rad remote list` command in order to be able to list all the radicle remotes added to the repository Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
parent
33547c9c3c
commit
027ccb943e
|
|
@ -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(())
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue