codeberg_cli/actions/issue/
mod.rs1use 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#[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}