use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Debug, Parser)]
#[command(name = "codex-ws", version, about)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Subcommand)]
pub enum Command {
Run(RunArgs),
Workspace(WorkspaceArgs),
}
#[derive(Debug, Parser)]
pub struct RunArgs {
#[arg(short, long)]
pub provider: String,
#[arg(short, long, value_name = "WORKSPACE")]
pub workspace: PathBuf,
#[arg(long, value_name = "PATH", default_value = "~/.cc-switch/cc-switch.db")]
pub config_db: PathBuf,
#[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
pub sessions_root: PathBuf,
#[arg(long, value_name = "IMAGE")]
pub image: Option<String>,
}
#[derive(Debug, Parser)]
pub struct WorkspaceArgs {
#[command(subcommand)]
pub command: WorkspaceCommand,
}
#[derive(Debug, Subcommand)]
pub enum WorkspaceCommand {
Ls(WorkspaceLsArgs),
Add(WorkspaceAddArgs),
}
#[derive(Debug, Parser)]
pub struct WorkspaceLsArgs {
#[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
pub sessions_root: PathBuf,
}
#[derive(Debug, Parser)]
pub struct WorkspaceAddArgs {
pub workspace_name: String,
#[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
pub sessions_root: PathBuf,
}