use std::path::PathBuf;
use clap::Subcommand;
use super::AuthTarget;
#[derive(Debug, Subcommand)]
pub enum TokenOp {
#[command(alias = "create", alias = "add")]
Issue {
#[arg(long, default_value_t = 24)]
ttl_hours: i64,
#[arg(long, default_value = "")]
label: String,
#[arg(long)]
account: Option<String>,
#[arg(long)]
max_requests: Option<u64>,
#[arg(long)]
max_tokens: Option<u64>,
#[arg(long)]
rate_limit_per_minute: Option<u64>,
#[arg(long)]
admin: bool,
#[arg(long = "github-repo", value_name = "OWNER/REPO")]
github_repo: Vec<String>,
#[command(flatten)]
target: AuthTarget,
},
Rotate {
id: String,
#[arg(long, default_value_t = 24)]
ttl_hours: i64,
#[arg(long, default_value = "")]
label: String,
#[arg(long)]
max_requests: Option<u64>,
#[arg(long)]
max_tokens: Option<u64>,
#[arg(long)]
rate_limit_per_minute: Option<u64>,
#[arg(long)]
account: Option<String>,
#[command(flatten)]
target: AuthTarget,
},
List {
#[arg(long)]
json: bool,
#[command(flatten)]
target: AuthTarget,
},
#[command(alias = "remove", alias = "delete")]
Revoke {
id: String,
#[command(flatten)]
target: AuthTarget,
},
Expire {
id: String,
#[command(flatten)]
target: AuthTarget,
},
Show {
id: String,
#[arg(long)]
json: bool,
#[command(flatten)]
target: AuthTarget,
},
}
#[derive(Debug, Subcommand)]
pub enum AccountOp {
List {
#[arg(long)]
json: bool,
#[command(flatten)]
target: AuthTarget,
},
}
#[derive(Debug, Subcommand)]
#[allow(clippy::large_enum_variant)]
pub enum ProviderOp {
List {
#[arg(long)]
json: bool,
#[command(flatten)]
target: AuthTarget,
},
#[command(alias = "create", alias = "issue")]
Add {
#[arg(long)]
name: String,
#[arg(long, default_value = "openai-compatible")]
kind: String,
#[arg(long)]
base_url: String,
#[arg(long)]
model: Option<String>,
#[arg(long, value_delimiter = ',')]
models: Vec<String>,
#[arg(long = "supported-client", value_delimiter = ',')]
supported_clients: Vec<String>,
#[arg(long, hide_env_values = true, conflicts_with = "api_key_stdin")]
api_key: Option<String>,
#[arg(long, conflicts_with = "api_key")]
api_key_stdin: bool,
#[arg(long)]
api_key_env: Option<String>,
#[arg(long)]
subscriber_id: Option<String>,
#[arg(long)]
acknowledge_intermediary_risk: bool,
#[arg(long, value_delimiter = ',')]
acknowledge_unsupported_client: Vec<String>,
#[arg(
long,
default_value_t = true,
num_args = 0..=1,
default_missing_value = "true"
)]
enabled: bool,
#[arg(long)]
if_absent: bool,
#[command(flatten)]
target: AuthTarget,
},
Show {
name: String,
#[arg(long)]
json: bool,
#[command(flatten)]
target: AuthTarget,
},
#[command(alias = "revoke", alias = "delete")]
Remove {
name: String,
#[command(flatten)]
target: AuthTarget,
},
Import {
path: PathBuf,
#[command(flatten)]
target: AuthTarget,
},
}