codeberg_cli/actions/repo/
assignees.rs1use forgejo_api::structs::User;
2
3use crate::actions::GeneralArgs;
4use crate::render::option::option_display;
5use crate::render::spinner::spin_until_ready;
6use crate::types::context::BergContext;
7use crate::types::git::OwnerRepo;
8
9use clap::Parser;
10
11#[derive(Parser, Debug)]
13pub struct RepoAssigneesArgs {}
14
15impl RepoAssigneesArgs {
16 pub async fn run(self, general_args: GeneralArgs) -> anyhow::Result<()> {
17 let _ = general_args;
18 let ctx = BergContext::new(self, general_args).await?;
19
20 let OwnerRepo { repo, owner } = ctx.owner_repo()?;
21 let repo_assignees =
22 spin_until_ready(ctx.client.repo_get_assignees(owner.as_str(), repo.as_str())).await?;
23
24 present_repo_assignees(&ctx, repo_assignees);
25
26 Ok(())
27 }
28}
29
30fn present_repo_assignees(ctx: &BergContext<RepoAssigneesArgs>, repo_assignees: Vec<User>) {
31 let mut table = ctx.make_table();
32
33 table
34 .set_header(vec![format!(
35 "Repository Assignees{}",
36 repo_assignees
37 .is_empty()
38 .then_some(" (empty)")
39 .unwrap_or_default()
40 )])
41 .add_rows(
42 repo_assignees
43 .into_iter()
44 .map(|assignee| vec![option_display(&assignee.login)]),
45 );
46
47 println!("{table}", table = table.show());
48}