codeberg-cli 0.5.5

CLI Tool for codeberg similar to gh and glab
Documentation
use crate::render::option::option_display;

pub mod comment;
pub mod create;
pub mod edit;
pub mod list;
pub mod view;

use clap::Subcommand;

use super::GlobalArgs;

/// Pull request subcommands
#[derive(Subcommand, Debug)]
pub enum PullRequestArgs {
    List(list::ListPullRequestArgs),
    Create(create::CreatePullRequestArgs),
    Edit(edit::EditPullRequestArgs),
    View(view::ViewPullRequestsArgs),
    Comment(comment::CommentPullRequestArgs),
}

impl PullRequestArgs {
    pub async fn run(self, global_args: GlobalArgs) -> miette::Result<()> {
        match self {
            PullRequestArgs::List(args) => args.run(global_args).await,
            PullRequestArgs::Create(args) => args.run(global_args).await,
            PullRequestArgs::Edit(args) => args.run(global_args).await,
            PullRequestArgs::View(args) => args.run(global_args).await,
            PullRequestArgs::Comment(args) => args.run(global_args).await,
        }
    }
}

fn display_pull_request(pull_request: &forgejo_api::structs::PullRequest) -> String {
    let nr = option_display(&pull_request.number);
    let title = option_display(&pull_request.title);
    format!("#{nr}:{title}")
}