2023-11-22 18:18:51 +02:00
|
|
|
use clap::{Parser, ValueEnum};
|
2023-11-25 18:08:56 +02:00
|
|
|
use serde::{Deserialize, Serialize};
|
2023-11-22 18:18:51 +02:00
|
|
|
|
2023-11-25 18:08:56 +02:00
|
|
|
#[derive(Serialize, Parser, Debug)]
|
2023-11-22 18:18:51 +02:00
|
|
|
pub struct Cli {
|
|
|
|
#[command(subcommand)]
|
|
|
|
pub command: Command,
|
|
|
|
#[arg(short, long, value_enum)]
|
2023-11-25 18:08:56 +02:00
|
|
|
pub backends: Option<Vec<Backend>>,
|
2023-11-22 18:18:51 +02:00
|
|
|
}
|
|
|
|
|
2023-11-25 18:08:56 +02:00
|
|
|
#[derive(Serialize, Deserialize, Parser, ValueEnum, Clone, Debug)]
|
|
|
|
#[serde(rename_all = "lowercase")]
|
2023-11-22 18:18:51 +02:00
|
|
|
pub enum Backend {
|
|
|
|
#[cfg(feature = "csv")]
|
|
|
|
CSV,
|
|
|
|
}
|
|
|
|
|
2023-11-25 18:08:56 +02:00
|
|
|
#[derive(Serialize, Parser, Debug)]
|
2023-11-22 18:18:51 +02:00
|
|
|
pub enum Command {
|
|
|
|
Open(Open),
|
|
|
|
}
|
|
|
|
|
2023-11-25 18:08:56 +02:00
|
|
|
#[derive(Serialize, Parser, Debug)]
|
2023-11-22 18:18:51 +02:00
|
|
|
pub struct Open {
|
|
|
|
pub method: String,
|
|
|
|
pub identifier: String,
|
|
|
|
pub resource: i8,
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn parse() -> Cli {
|
|
|
|
Cli::parse()
|
|
|
|
}
|
2023-11-22 19:44:10 +02:00
|
|
|
|
|
|
|
#[cfg(feature = "csv")]
|
|
|
|
#[derive(Deserialize, Parser, Debug)]
|
|
|
|
pub struct CSV {
|
|
|
|
#[clap(short, long)]
|
|
|
|
#[arg(default_value = "Some(String::from(\"/etc/labadoor\"))")]
|
|
|
|
pub path: String,
|
|
|
|
}
|