use clap::{Args, ValueEnum};
use std::path::PathBuf;
#[derive(Clone, Copy, Debug, PartialEq, Eq, ValueEnum)]
pub enum ReviewMode {
Working,
Staged,
Branch,
}
#[derive(Args, Clone, Debug, Default)]
pub struct ContextArgs {
#[arg(long,conflicts_with_all=["branch","notes"])]
pub pr: Option<String>,
#[arg(long, conflicts_with = "notes")]
pub branch: Option<String>,
#[arg(long, value_enum, conflicts_with_all = ["pr", "notes"])]
pub mode: Option<ReviewMode>,
#[arg(long, requires = "mode")]
pub base: Option<String>,
#[arg(long,num_args=0..=1,default_missing_value=".")]
pub notes: Option<PathBuf>,
#[arg(long)]
pub path: Option<PathBuf>,
#[arg(long)]
pub repo: Option<String>,
#[arg(long, default_value = "github.com")]
pub host: String,
}
#[derive(Args, Clone, Debug, Default)]
pub struct ActorArgs {
#[arg(long = "as", conflicts_with = "identity")]
pub as_name: Option<String>,
#[arg(long, requires = "as_name")]
pub model: Option<String>,
#[arg(long, requires = "model")]
pub provider: Option<String>,
#[arg(long)]
pub identity: Option<String>,
}
#[derive(Args, Default)]
pub struct MutationArgs {
#[arg(long)]
pub(crate) expected_version: Option<String>,
#[arg(long, requires = "expected_version")]
pub(crate) request_key: Option<String>,
}