cli: Refactor `rad issue list`

Move code into its own method.
This commit is contained in:
Slack Coder 2023-05-04 16:19:19 -05:00 committed by Alexis Sellier
parent e0241050f8
commit f4dff17085
No known key found for this signature in database
1 changed files with 80 additions and 69 deletions

View File

@ -9,6 +9,7 @@ use radicle::cob::issue;
use radicle::cob::issue::{CloseReason, Issues, State};
use radicle::node::Handle;
use radicle::prelude::Did;
use radicle::profile;
use radicle::storage::WriteStorage;
use radicle::{cob, Node};
use radicle_term::table::TableOptions;
@ -327,6 +328,32 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
}
}
Operation::List { assigned } => {
list(&issues, &profile, &assigned)?;
}
Operation::Delete { id } => {
let id = id.resolve(&repo.backend)?;
issues.remove(&id, &signer)?;
}
}
if announce {
match node.announce_refs(rid) {
Ok(()) => {}
Err(e) if e.is_connection_err() => {
term::warning("Could not announce issue refs: node is not running");
}
Err(e) => return Err(e.into()),
}
}
Ok(())
}
fn list(
issues: &Issues,
profile: &profile::Profile,
assigned: &Option<Assigned>,
) -> anyhow::Result<()> {
if issues.is_empty()? {
term::print(term::format::italic("Nothing to show."));
return Ok(());
@ -334,7 +361,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
let assignee = match assigned {
Some(Assigned::Me) => Some(*profile.id()),
Some(Assigned::Peer(id)) => Some(id.into()),
Some(Assigned::Peer(id)) => Some((*id).into()),
None => None,
};
@ -396,22 +423,6 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
]);
}
t.print();
}
Operation::Delete { id } => {
let id = id.resolve(&repo.backend)?;
issues.remove(&id, &signer)?;
}
}
if announce {
match node.announce_refs(rid) {
Ok(()) => {}
Err(e) if e.is_connection_err() => {
term::warning("Could not announce issue refs: node is not running");
}
Err(e) => return Err(e.into()),
}
}
Ok(())
}