use clap::{Parser, Subcommand, ValueEnum};
use std::path::PathBuf;
#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum, Default)]
pub enum Format {
#[default]
Text,
Json,
}
#[derive(Parser)]
#[command(name = "broll", about = "Terminal session recorder with searchable output")]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Subcommand)]
pub enum Command {
Start {
#[arg(short, long)]
name: Option<String>,
#[arg(short, long)]
tag: Option<String>,
#[arg(short, long)]
group: Option<String>,
#[arg(long, default_value_t = false)]
no_filter: bool,
#[arg(short, long)]
dir: Option<PathBuf>,
},
Stop,
List {
#[arg(short, long)]
group: Option<String>,
},
Search {
query: Option<String>,
#[arg(short, long)]
group: Option<String>,
#[arg(short, long)]
terminal: Option<String>,
#[arg(short, long, value_enum, default_value_t = Format::Text)]
format: Format,
},
View {
id: String,
},
Annotate {
id: String,
note: String,
},
Rename {
id: String,
name: String,
},
Delete {
#[arg(required = true)]
ids: Vec<String>,
#[arg(short, long, default_value_t = false)]
force: bool,
},
Export {
id: String,
#[arg(short, long)]
output: Option<PathBuf>,
},
Import {
file: PathBuf,
},
Stats,
Extract {
id: String,
#[arg(short, long)]
output: Option<PathBuf>,
},
}