mod branch_restriction;
mod clone;
mod create;
mod default_reviewer;
mod delete;
mod deploy_key;
mod edit;
mod fork;
mod list;
mod set_default;
mod sync;
mod view;
mod webhook;
use crate::core::Context;
use clap::{Args, Subcommand};
#[derive(Args, Debug)]
pub struct RepoArgs {
#[command(subcommand)]
command: RepoCommands,
}
#[derive(Subcommand, Debug)]
enum RepoCommands {
View(view::ViewArgs),
Create(create::CreateArgs),
Clone(clone::CloneArgs),
Fork(fork::ForkArgs),
Edit(edit::EditArgs),
Rename(edit::RenameArgs),
Delete(delete::DeleteArgs),
List(list::ListArgs),
SetDefault(set_default::SetDefaultArgs),
Sync(sync::SyncArgs),
Webhook(webhook::WebhookArgs),
DeployKey(deploy_key::DeployKeyArgs),
BranchRestriction(branch_restriction::BranchRestrictionArgs),
DefaultReviewer(default_reviewer::DefaultReviewerArgs),
}
pub fn run(ctx: &Context, args: RepoArgs) -> anyhow::Result<()> {
match args.command {
RepoCommands::View(a) => view::run(ctx, a),
RepoCommands::Create(a) => create::run(ctx, a),
RepoCommands::Clone(a) => clone::run(ctx, a),
RepoCommands::Fork(a) => fork::run(ctx, a),
RepoCommands::Edit(a) => edit::run(ctx, a),
RepoCommands::Rename(a) => edit::run_rename(ctx, a),
RepoCommands::Delete(a) => delete::run(ctx, a),
RepoCommands::List(a) => list::run(ctx, a),
RepoCommands::SetDefault(a) => set_default::run(ctx, a),
RepoCommands::Sync(a) => sync::run(ctx, a),
RepoCommands::Webhook(a) => webhook::run(ctx, a),
RepoCommands::DeployKey(a) => deploy_key::run(ctx, a),
RepoCommands::BranchRestriction(a) => branch_restriction::run(ctx, a),
RepoCommands::DefaultReviewer(a) => default_reviewer::run(ctx, a),
}
}