use clap::Subcommand;
use std::path::PathBuf;
#[derive(Subcommand)]
pub enum CicdAction {
Report {
input: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(short, long, default_value = "junit")]
format: String,
},
Docker {
#[arg(short, long, default_value = ".")]
output: PathBuf,
},
Github {
#[arg(short, long, default_value = ".github/workflows/ci.yml")]
output: PathBuf,
},
Gitlab {
#[arg(short, long, default_value = ".gitlab-ci.yml")]
output: PathBuf,
},
}
#[derive(Subcommand)]
pub enum CacheAction {
Stats,
Clear,
Config {
#[arg(long)]
ttl: Option<u64>,
#[arg(long)]
max_size: Option<usize>,
},
}
#[derive(Subcommand)]
pub enum AliasAction {
List,
Show {
name: String,
},
Add {
name: String,
command: String,
},
Remove {
name: String,
},
Reset,
}
#[derive(Subcommand)]
pub enum IndexAction {
List {
dataset: String,
},
Rebuild {
dataset: String,
#[arg(long)]
index: Option<String>,
},
Stats {
dataset: String,
#[arg(short, long, default_value = "text")]
format: String,
},
Optimize {
dataset: String,
},
}
#[derive(Subcommand)]
pub enum ConfigAction {
Init {
#[arg(short, long, default_value = "oxirs.toml")]
output: PathBuf,
},
Validate {
config: PathBuf,
},
Show {
config: Option<PathBuf>,
},
}
#[derive(Subcommand)]
pub enum TemplateAction {
List {
#[arg(long)]
category: Option<String>,
},
Show {
name: String,
},
Render {
name: String,
#[arg(short, long)]
param: Vec<String>,
},
}
#[derive(Subcommand)]
pub enum HistoryAction {
List {
#[arg(short, long, default_value = "20")]
limit: Option<usize>,
#[arg(short, long)]
dataset: Option<String>,
},
Show {
id: usize,
},
Replay {
id: usize,
#[arg(short, long)]
output: Option<String>,
},
Search {
query: String,
},
Clear,
Stats,
Analytics {
#[arg(short, long)]
dataset: Option<String>,
},
}
#[derive(Subcommand)]
pub enum MigrateAction {
Format {
source: PathBuf,
target: PathBuf,
#[arg(long)]
from: String,
#[arg(long)]
to: String,
},
FromTdb1 {
tdb_dir: PathBuf,
dataset: String,
#[arg(long)]
skip_validation: bool,
},
FromTdb2 {
tdb_dir: PathBuf,
dataset: String,
#[arg(long)]
skip_validation: bool,
},
FromVirtuoso {
connection: String,
dataset: String,
#[arg(long, default_value = "all")]
graphs: String,
},
FromRdf4j {
repo_dir: PathBuf,
dataset: String,
},
FromBlazegraph {
endpoint: String,
dataset: String,
#[arg(long, default_value = "kb")]
namespace: String,
},
FromGraphdb {
endpoint: String,
dataset: String,
#[arg(long)]
repository: String,
},
}
#[derive(Subcommand)]
pub enum PitrAction {
Init {
dataset: PathBuf,
#[arg(long, default_value = "100")]
max_log_size: u64,
#[arg(long)]
auto_archive: bool,
},
Checkpoint {
dataset: PathBuf,
name: String,
},
List {
dataset: PathBuf,
#[arg(short, long, default_value = "text")]
format: String,
},
RecoverTimestamp {
dataset: PathBuf,
timestamp: String,
output: PathBuf,
},
RecoverTransaction {
dataset: PathBuf,
transaction_id: u64,
output: PathBuf,
},
Archive {
dataset: PathBuf,
},
}
#[derive(Subcommand)]
pub enum BenchmarkAction {
Run {
dataset: String,
#[arg(short, long, default_value = "sp2bench")]
suite: String,
#[arg(short = 'I', long, default_value = "10")]
iterations: usize,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(long)]
detailed: bool,
#[arg(long, default_value = "3")]
warmup: usize,
},
Generate {
output: PathBuf,
#[arg(short, long, default_value = "small")]
size: String,
#[arg(short = 't', long, default_value = "rdf")]
dataset_type: String,
#[arg(long)]
seed: Option<u64>,
#[arg(long)]
triples: Option<usize>,
#[arg(long)]
schema: Option<PathBuf>,
},
Analyze {
input: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(short, long, default_value = "text")]
format: String,
#[arg(long)]
suggestions: bool,
#[arg(long)]
patterns: bool,
},
Compare {
baseline: PathBuf,
current: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(long, default_value = "10.0")]
threshold: f64,
#[arg(short, long, default_value = "text")]
format: String,
},
}
#[derive(Subcommand)]
pub enum AspectAction {
Validate {
file: PathBuf,
#[arg(short, long)]
detailed: bool,
#[arg(short, long, default_value = "text")]
format: String,
},
Prettyprint {
file: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(short, long, default_value = "turtle")]
format: String,
#[arg(long)]
comments: bool,
},
To {
file: PathBuf,
format: String,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(long)]
examples: bool,
#[arg(short = 'f', long = "format")]
format_variant: Option<String>,
},
Edit {
#[command(subcommand)]
action: EditAction,
},
Usage {
input: String,
#[arg(long = "models-root")]
models_root: Option<PathBuf>,
},
From {
file: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(short, long, default_value = "ttl")]
format: String,
},
}
#[derive(Subcommand)]
pub enum EditAction {
Move {
file: PathBuf,
element: String,
namespace: Option<String>,
#[arg(long)]
dry_run: bool,
#[arg(long)]
details: bool,
#[arg(long)]
force: bool,
#[arg(long)]
copy_file_header: bool,
},
Newversion {
file: PathBuf,
#[arg(long, conflicts_with_all = ["minor", "micro"])]
major: bool,
#[arg(long, conflicts_with_all = ["major", "micro"])]
minor: bool,
#[arg(long, conflicts_with_all = ["major", "minor"])]
micro: bool,
#[arg(long)]
dry_run: bool,
#[arg(long)]
details: bool,
#[arg(long)]
force: bool,
},
}
#[derive(Subcommand)]
pub enum AasAction {
ToAspect {
file: PathBuf,
#[arg(short = 'd', long = "output-directory")]
output_directory: Option<PathBuf>,
#[arg(short = 's', long = "submodel-template")]
submodel_templates: Vec<usize>,
},
List {
file: PathBuf,
},
}
#[derive(Subcommand)]
pub enum PackageAction {
Import {
file: PathBuf,
#[arg(long = "models-root", required = true)]
models_root: PathBuf,
#[arg(long)]
dry_run: bool,
#[arg(long)]
details: bool,
#[arg(long)]
force: bool,
},
Export {
input: String,
#[arg(short = 'o', long = "output", required = true)]
output: PathBuf,
#[arg(long)]
version: Option<String>,
},
}
#[derive(Subcommand)]
pub enum TsdbAction {
Query {
dataset: String,
#[arg(short = 'S', long)]
series: Option<u64>,
#[arg(long)]
start: Option<String>,
#[arg(long)]
end: Option<String>,
#[arg(long)]
sparql: Option<String>,
#[arg(short, long)]
aggregate: Option<String>,
#[arg(short = 'f', long, default_value = "table")]
format: String,
},
Insert {
dataset: String,
#[arg(short, long)]
series: u64,
#[arg(short, long)]
timestamp: Option<String>,
#[arg(short = 'V', long)]
value: f64,
#[arg(long)]
from_csv: Option<PathBuf>,
},
Stats {
dataset: String,
#[arg(short, long)]
series: Option<u64>,
#[arg(long)]
detailed: bool,
},
Compact {
dataset: String,
#[arg(short, long)]
series: Option<u64>,
#[arg(long)]
force: bool,
},
Retention {
#[command(subcommand)]
action: RetentionAction,
},
Export {
dataset: String,
#[arg(short, long)]
series: u64,
#[arg(short, long)]
output: PathBuf,
#[arg(short, long, default_value = "csv")]
format: String,
#[arg(long)]
start: Option<String>,
#[arg(long)]
end: Option<String>,
},
Benchmark {
dataset: String,
#[arg(long, default_value = "100000")]
points: usize,
#[arg(long, default_value = "1")]
series_count: usize,
},
}
#[derive(Subcommand)]
pub enum RetentionAction {
List {
dataset: String,
},
Add {
dataset: String,
#[arg(short, long)]
name: String,
#[arg(short, long)]
duration: String,
#[arg(long)]
downsample: Option<String>,
#[arg(long, default_value = "avg")]
aggregation: String,
},
Remove {
dataset: String,
#[arg(short, long)]
name: String,
},
Enforce {
dataset: String,
#[arg(long)]
dry_run: bool,
},
}
#[derive(Subcommand)]
pub enum ModbusAction {
MonitorTcp {
#[arg(short, long)]
address: String,
#[arg(short, long, default_value = "1")]
unit_id: u8,
#[arg(long)]
start: u16,
#[arg(long, default_value = "10")]
count: u16,
#[arg(long, default_value = "1000")]
interval: u64,
#[arg(short, long, default_value = "table")]
format: String,
#[arg(short, long)]
output: Option<PathBuf>,
},
MonitorRtu {
#[arg(short, long)]
port: String,
#[arg(short, long, default_value = "9600")]
baud: u32,
#[arg(short, long, default_value = "1")]
unit_id: u8,
#[arg(long)]
start: u16,
#[arg(long, default_value = "10")]
count: u16,
#[arg(long, default_value = "1000")]
interval: u64,
},
Read {
#[arg(short, long)]
device: String,
#[arg(short = 't', long, default_value = "holding")]
register_type: String,
#[arg(long)]
address: u16,
#[arg(long, default_value = "1")]
count: u16,
#[arg(long)]
datatype: Option<String>,
},
Write {
#[arg(short, long)]
device: String,
#[arg(long)]
address: u16,
#[arg(long)]
value: String,
#[arg(long, default_value = "uint16")]
datatype: String,
},
ToRdf {
#[arg(short, long)]
device: String,
#[arg(short = 'C', long)]
config: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(short, long, default_value = "turtle")]
format: String,
#[arg(short = 'n', long, default_value = "1")]
count: usize,
},
MockServer {
#[arg(short, long, default_value = "5020")]
port: u16,
#[arg(short = 'C', long)]
config: Option<PathBuf>,
},
}
#[derive(Subcommand)]
pub enum CanbusAction {
Monitor {
#[arg(short = 'I', long)]
interface: String,
#[arg(long)]
filter: Option<String>,
#[arg(long)]
dbc: Option<PathBuf>,
#[arg(short, long, default_value = "table")]
format: String,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(long)]
j1939: bool,
},
ParseDbc {
#[arg(short = 'd', long)]
file: PathBuf,
#[arg(short = 'f', long, default_value = "table")]
format: String,
#[arg(long)]
detailed: bool,
},
Decode {
#[arg(long)]
id: String,
#[arg(long)]
data: String,
#[arg(long)]
dbc: PathBuf,
#[arg(short, long, default_value = "table")]
format: String,
},
Send {
#[arg(short = 'I', long)]
interface: String,
#[arg(long)]
id: String,
#[arg(long)]
data: String,
#[arg(long)]
extended: bool,
},
ToSamm {
#[arg(short, long)]
dbc: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(long, default_value = "urn:samm:org.example.can")]
namespace: String,
#[arg(long)]
per_message: bool,
},
ToRdf {
#[arg(short = 'I', long)]
interface: String,
#[arg(long)]
dbc: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(short, long, default_value = "turtle")]
format: String,
#[arg(short = 'n', long, default_value = "100")]
count: usize,
},
Replay {
#[arg(short, long)]
file: PathBuf,
#[arg(short = 'I', long)]
interface: String,
#[arg(long, default_value = "1.0")]
speed: f64,
#[arg(long)]
r#loop: bool,
},
}
#[derive(Subcommand)]
pub enum ProfilerAction {
Run {
#[arg(short, long)]
dataset: String,
#[arg(short = 'Q', long)]
query: String,
#[arg(long)]
file: bool,
#[arg(short = 'I', long, default_value = "10")]
iterations: usize,
#[arg(long)]
suggestions: bool,
},
Suggest {
#[arg(short = 'Q', long)]
query: String,
#[arg(long)]
file: bool,
},
}
#[derive(Subcommand)]
pub enum ResultCacheAction {
Stats,
Clear,
Invalidate {
#[arg(short, long)]
dataset: String,
},
Evict,
List {
#[arg(short, long)]
dataset: Option<String>,
},
Config {
#[arg(long)]
max_size: Option<usize>,
#[arg(long)]
ttl: Option<u64>,
},
}
#[derive(Subcommand)]
pub enum StreamAction {
Query {
#[arg(short, long)]
dataset: String,
#[arg(short = 'Q', long)]
query: String,
#[arg(long)]
file: bool,
#[arg(long, default_value = "1000")]
chunk_size: usize,
#[arg(short, long, default_value = "json")]
format: String,
#[arg(long)]
max_rows: Option<usize>,
#[arg(long)]
no_progress: bool,
#[arg(short, long)]
output: Option<PathBuf>,
},
}