codeberg_cli/actions/issue/
mod.rs

1use crate::render::option::option_display;
2
3pub mod comment;
4pub mod create;
5pub mod edit;
6pub mod list;
7pub mod view;
8
9use clap::Subcommand;
10
11use super::GeneralArgs;
12
13/// Issue subcommands
14#[derive(Subcommand, Debug)]
15pub enum IssueArgs {
16    List(list::ListIssueArgs),
17    Create(create::CreateIssueArgs),
18    Comment(comment::CommentIssueArgs),
19    View(view::ViewIssueArgs),
20    Edit(edit::EditIssueArgs),
21}
22
23impl IssueArgs {
24    pub async fn run(self, general_args: GeneralArgs) -> anyhow::Result<()> {
25        match self {
26            IssueArgs::List(args) => args.run(general_args).await,
27            IssueArgs::Create(args) => args.run(general_args).await,
28            IssueArgs::Comment(args) => args.run(general_args).await,
29            IssueArgs::View(args) => args.run(general_args).await,
30            IssueArgs::Edit(args) => args.run(general_args).await,
31        }
32    }
33}
34
35fn display_issue(issue: &forgejo_api::structs::Issue) -> String {
36    let nr = option_display(&issue.number);
37    let title = option_display(&issue.title);
38    format!("#{nr}:{title}")
39}