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),
Config(ConfigArgs),
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")]
pub config_db: Option<PathBuf>,
#[arg(long, value_name = "PATH")]
pub sessions_root: Option<PathBuf>,
#[arg(long, value_name = "IMAGE")]
pub image: Option<String>,
}
#[derive(Debug, Parser)]
pub struct ConfigArgs {
#[command(subcommand)]
pub command: ConfigCommand,
}
#[derive(Debug, Subcommand)]
pub enum ConfigCommand {
Get(ConfigGetArgs),
Set(ConfigSetArgs),
}
#[derive(Debug, Parser)]
pub struct ConfigGetArgs {
pub config_name: Option<String>,
}
#[derive(Debug, Parser)]
pub struct ConfigSetArgs {
pub config_name: String,
pub config_value: PathBuf,
}
#[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")]
pub sessions_root: Option<PathBuf>,
}
#[derive(Debug, Parser)]
pub struct WorkspaceAddArgs {
pub workspace_name: String,
#[arg(long, value_name = "PATH")]
pub sessions_root: Option<PathBuf>,
}