use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(name = "twofold", version, about)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
Serve,
Publish(PublishArgs),
List(ListArgs),
Delete(DeleteArgs),
Token(TokenArgs),
Audit(AuditArgs),
Mcp,
}
#[derive(clap::Args, Debug)]
pub struct AuditArgs {
#[arg(long, default_value = "http://localhost:3000")]
pub server: String,
#[arg(long)]
pub token: Option<String>,
#[arg(long, default_value = "20")]
pub limit: u32,
}
#[derive(clap::Args, Debug)]
pub struct PublishArgs {
pub path: String,
#[arg(long, default_value = "http://localhost:3000")]
pub server: String,
#[arg(long)]
pub token: Option<String>,
#[arg(long)]
pub title: Option<String>,
#[arg(long)]
pub slug: Option<String>,
#[arg(long)]
pub theme: Option<String>,
#[arg(long)]
pub expiry: Option<String>,
#[arg(long)]
pub password: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct ListArgs {
#[arg(long, default_value = "http://localhost:3000")]
pub server: String,
#[arg(long)]
pub token: Option<String>,
#[arg(long, default_value = "20")]
pub limit: u32,
}
#[derive(clap::Args, Debug)]
pub struct DeleteArgs {
pub slug: String,
#[arg(long, default_value = "http://localhost:3000")]
pub server: String,
#[arg(long)]
pub token: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct TokenArgs {
#[command(subcommand)]
pub action: TokenAction,
}
#[derive(Subcommand, Debug)]
pub enum TokenAction {
Create {
#[arg(long)]
name: String,
#[arg(long)]
db: Option<String>,
},
List {
#[arg(long)]
db: Option<String>,
},
Revoke {
#[arg(long)]
name: String,
#[arg(long)]
db: Option<String>,
},
}