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 Config(ConfigArgs),
21
22 Workspace(WorkspaceArgs),
24}
25
26#[derive(Debug, Parser)]
28pub struct RunArgs {
29 #[arg(short, long)]
31 pub provider: String,
32
33 #[arg(short, long, value_name = "WORKSPACE")]
35 pub workspace: PathBuf,
36
37 #[arg(long, value_name = "PATH")]
39 pub config_db: Option<PathBuf>,
40
41 #[arg(long, value_name = "PATH")]
43 pub sessions_root: Option<PathBuf>,
44
45 #[arg(long, value_name = "IMAGE")]
47 pub image: Option<String>,
48}
49
50#[derive(Debug, Parser)]
52pub struct ConfigArgs {
53 #[command(subcommand)]
54 pub command: ConfigCommand,
55}
56
57#[derive(Debug, Subcommand)]
59pub enum ConfigCommand {
60 Get(ConfigGetArgs),
62
63 Set(ConfigSetArgs),
65}
66
67#[derive(Debug, Parser)]
69pub struct ConfigGetArgs {
70 pub config_name: Option<String>,
72}
73
74#[derive(Debug, Parser)]
76pub struct ConfigSetArgs {
77 pub config_name: String,
79
80 pub config_value: PathBuf,
82}
83
84#[derive(Debug, Parser)]
86pub struct WorkspaceArgs {
87 #[command(subcommand)]
88 pub command: WorkspaceCommand,
89}
90
91#[derive(Debug, Subcommand)]
93pub enum WorkspaceCommand {
94 Ls(WorkspaceLsArgs),
96
97 Add(WorkspaceAddArgs),
99}
100
101#[derive(Debug, Parser)]
103pub struct WorkspaceLsArgs {
104 #[arg(long, value_name = "PATH")]
106 pub sessions_root: Option<PathBuf>,
107}
108
109#[derive(Debug, Parser)]
111pub struct WorkspaceAddArgs {
112 pub workspace_name: String,
114
115 #[arg(long, value_name = "PATH")]
117 pub sessions_root: Option<PathBuf>,
118}