1use std::path::PathBuf;
2
3use clap::{Parser, Subcommand};
4
5#[derive(Debug, Parser)]
7#[command(name = "codex-ws", version, about)]
8pub struct Cli {
9 #[command(subcommand)]
10 pub command: Command,
11}
12
13#[derive(Debug, Subcommand)]
15pub enum Command {
16 Run(RunArgs),
18
19 Workspace(WorkspaceArgs),
21}
22
23#[derive(Debug, Parser)]
25pub struct RunArgs {
26 #[arg(short, long)]
28 pub provider: String,
29
30 #[arg(short, long, value_name = "WORKSPACE")]
32 pub workspace: PathBuf,
33
34 #[arg(long, value_name = "PATH", default_value = "~/.cc-switch/cc-switch.db")]
36 pub config_db: PathBuf,
37
38 #[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
40 pub sessions_root: PathBuf,
41
42 #[arg(long, value_name = "IMAGE")]
44 pub image: Option<String>,
45}
46
47#[derive(Debug, Parser)]
49pub struct WorkspaceArgs {
50 #[command(subcommand)]
51 pub command: WorkspaceCommand,
52}
53
54#[derive(Debug, Subcommand)]
56pub enum WorkspaceCommand {
57 Ls(WorkspaceLsArgs),
59
60 Add(WorkspaceAddArgs),
62}
63
64#[derive(Debug, Parser)]
66pub struct WorkspaceLsArgs {
67 #[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
69 pub sessions_root: PathBuf,
70}
71
72#[derive(Debug, Parser)]
74pub struct WorkspaceAddArgs {
75 pub workspace_name: String,
77
78 #[arg(long, value_name = "PATH", default_value = "~/.codex-ws")]
80 pub sessions_root: PathBuf,
81}