From c078a13c8e253322c54b448a5bfccc9324ed6875 Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Thu, 30 Nov 2023 20:49:13 +0200 Subject: [PATCH] log: Add structs for cli arguments and configuration --- labadoor-log/src/cli.rs | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 labadoor-log/src/cli.rs diff --git a/labadoor-log/src/cli.rs b/labadoor-log/src/cli.rs new file mode 100644 index 0000000..09c79f9 --- /dev/null +++ b/labadoor-log/src/cli.rs @@ -0,0 +1,42 @@ +use clap::{Parser, ValueEnum}; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Parser, Debug)] +pub struct Cli { + #[command(subcommand)] + pub command: Command, + #[arg(short, long, value_enum)] + pub backends: Option>, +} + +#[derive(Serialize, Deserialize, Parser, ValueEnum, Clone, Debug)] +#[serde(rename_all = "lowercase")] +pub enum Backend { + #[cfg(feature = "csv")] + CSV, +} + +#[derive(Serialize, Parser, Debug)] +pub enum Command { + Append(Append), +} + +#[derive(Serialize, Parser, Debug)] +pub struct Append { + pub time: String, + pub username: String, + pub resource: String, + pub method: String, +} + +pub fn parse() -> Cli { + Cli::parse() +} + +#[cfg(feature = "csv")] +#[derive(Deserialize, Parser, Debug)] +pub struct CSV { + #[clap(short, long)] + #[arg(default_value = "Some(String::from(\"/etc/labadoor\"))")] + pub path: String, +}