use clap::Subcommand;
use std::path::PathBuf;
use uuid::Uuid;
#[derive(Subcommand, Clone)]
pub enum OrgCommand {
List {
#[arg(long)]
limit: Option<u32>,
#[arg(long)]
cursor: Option<String>,
},
}
#[derive(Subcommand, Clone)]
pub enum ProjectCommand {
List {
#[arg(long)]
org: Option<Uuid>,
#[arg(long)]
limit: Option<u32>,
#[arg(long)]
cursor: Option<String>,
},
Create {
#[arg(long)]
org: Option<Uuid>,
name: String,
},
Members {
#[command(subcommand)]
members_command: ProjectMembersCommand,
},
Fs {
#[command(subcommand)]
fs_command: FsCommand,
},
Retention {
#[command(subcommand)]
retention_command: ProjectRetentionCommand,
},
Select {
project: Uuid,
},
}
#[derive(Subcommand, Clone)]
pub enum ProjectMembersCommand {
List {
#[arg(long)]
project: Option<Uuid>,
#[arg(long)]
limit: Option<u32>,
#[arg(long)]
cursor: Option<String>,
},
}
#[derive(Subcommand, Clone)]
pub enum ProjectRetentionCommand {
Get {
#[arg(long)]
project: Option<Uuid>,
},
Set {
max_versions: usize,
#[arg(long)]
project: Option<Uuid>,
},
}
#[derive(Subcommand, Clone)]
pub enum FsCommand {
Read {
path: String,
#[arg(long)]
output: Option<PathBuf>,
#[arg(long)]
project: Option<Uuid>,
},
Write {
path: String,
input: PathBuf,
#[arg(long)]
project: Option<Uuid>,
},
Ls {
#[arg(default_value = "/")]
path: String,
#[arg(long)]
project: Option<Uuid>,
},
Mkdir {
path: String,
#[arg(short, long)]
recursive: bool,
#[arg(long)]
project: Option<Uuid>,
},
Rm {
path: String,
#[arg(long)]
dir: bool,
#[arg(short, long)]
recursive: bool,
#[arg(long)]
project: Option<Uuid>,
},
History {
path: String,
#[arg(long)]
project: Option<Uuid>,
},
Restore {
version: Uuid,
#[arg(long)]
project: Option<Uuid>,
},
HistoryDelete {
version: Uuid,
#[arg(long)]
project: Option<Uuid>,
},
SnapshotList {
#[arg(long)]
project: Option<Uuid>,
},
SnapshotCreate {
#[arg(long)]
message: Option<String>,
#[arg(long)]
parent: Option<Uuid>,
#[arg(long)]
tag: Option<String>,
#[arg(long)]
project: Option<Uuid>,
},
SnapshotRestore {
snapshot: Uuid,
#[arg(long)]
project: Option<Uuid>,
},
SnapshotDelete {
snapshot: Uuid,
#[arg(long)]
project: Option<Uuid>,
},
SnapshotTagList {
#[arg(long)]
project: Option<Uuid>,
},
SnapshotTagSet {
snapshot: Uuid,
tag: String,
#[arg(long)]
project: Option<Uuid>,
},
SnapshotTagDelete {
tag: String,
#[arg(long)]
project: Option<Uuid>,
},
GitClone {
directory: PathBuf,
#[arg(long)]
project: Option<Uuid>,
#[arg(long)]
server: Option<String>,
},
GitPull {
#[arg(default_value = ".")]
directory: PathBuf,
#[arg(long)]
project: Option<Uuid>,
#[arg(long)]
server: Option<String>,
},
GitPush {
#[arg(default_value = ".")]
directory: PathBuf,
#[arg(long)]
project: Option<Uuid>,
#[arg(long)]
server: Option<String>,
},
ManifestHistory {
path: String,
#[arg(long)]
project: Option<Uuid>,
},
ManifestRestore {
version: Uuid,
#[arg(long)]
project: Option<Uuid>,
},
ManifestUpdate {
path: String,
#[arg(long)]
base_version: Uuid,
#[arg(long)]
manifest: PathBuf,
#[arg(long)]
project: Option<Uuid>,
},
}
#[derive(Subcommand, Clone)]
pub enum RemoteCommand {
Run {
script: PathBuf,
#[arg(long)]
project: Option<Uuid>,
#[arg(long)]
server: Option<String>,
},
}