From 5013fdcf1c1a297a76cf73e14f535fa2786578bd Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Wed, 22 Nov 2023 18:18:51 +0200 Subject: [PATCH] Create `labadoor-auth`, for wrapping storage backends --- Cargo.toml | 1 + labadoor-auth/Cargo.toml | 11 +++++++++++ labadoor-auth/src/cli.rs | 31 +++++++++++++++++++++++++++++++ labadoor-auth/src/lib.rs | 7 +++++++ labadoor/Cargo.toml | 2 ++ labadoor/src/cli.rs | 2 ++ labadoor/src/main.rs | 4 ++++ 7 files changed, 58 insertions(+) create mode 100644 labadoor-auth/Cargo.toml create mode 100644 labadoor-auth/src/cli.rs create mode 100644 labadoor-auth/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 71c2821..c7c42b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,5 +5,6 @@ members = [ "labadoor-telegram", "labadoor-csv", "labadoor", + "labadoor-auth", "labadoor-acl", ] diff --git a/labadoor-auth/Cargo.toml b/labadoor-auth/Cargo.toml new file mode 100644 index 0000000..6319f94 --- /dev/null +++ b/labadoor-auth/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "labadoor-auth" +version = "0.1.0" +edition = "2021" + +[dependencies] +clap = { version = "4.4.8", features = ["derive"] } +labadoor-csv = { path = "../labadoor-csv", optional = true } + +[features] +csv = ["dep:labadoor-csv"] diff --git a/labadoor-auth/src/cli.rs b/labadoor-auth/src/cli.rs new file mode 100644 index 0000000..119e651 --- /dev/null +++ b/labadoor-auth/src/cli.rs @@ -0,0 +1,31 @@ +use clap::{Parser, ValueEnum}; + +#[derive(Parser, Debug)] +pub struct Cli { + #[command(subcommand)] + pub command: Command, + #[arg(short, long, value_enum)] + pub backend: Backend, +} + +#[derive(Parser, ValueEnum, Clone, Debug)] +pub enum Backend { + #[cfg(feature = "csv")] + CSV, +} + +#[derive(Parser, Debug)] +pub enum Command { + Open(Open), +} + +#[derive(Parser, Debug)] +pub struct Open { + pub method: String, + pub identifier: String, + pub resource: i8, +} + +pub fn parse() -> Cli { + Cli::parse() +} diff --git a/labadoor-auth/src/lib.rs b/labadoor-auth/src/lib.rs new file mode 100644 index 0000000..7b5b07f --- /dev/null +++ b/labadoor-auth/src/lib.rs @@ -0,0 +1,7 @@ +pub mod cli; + +pub fn auth(i: &cli::Cli) { + match i.command { + cli::Command::Open(_) => todo!(), + }; +} diff --git a/labadoor/Cargo.toml b/labadoor/Cargo.toml index e3ec851..a162b47 100644 --- a/labadoor/Cargo.toml +++ b/labadoor/Cargo.toml @@ -9,6 +9,7 @@ labadoor-telegram = { path = "../labadoor-telegram", optional = true } labadoor-matrix = { path = "../labadoor-matrix", optional = true } labadoor-csv = { path = "../labadoor-csv", optional = true } labadoor-gpio = { path = "../labadoor-gpio", optional = true } +labadoor-auth = { path = "../labadoor-auth", optional = true } labadoor-acl = { path = "../labadoor-acl" } serde = { version = "1.0.164", features = ["derive"] } config = "0.13.3" @@ -18,3 +19,4 @@ telegram = ["dep:labadoor-telegram"] matrix = ["dep:labadoor-matrix"] csv = ["dep:labadoor-csv"] gpio = ["dep:labadoor-gpio"] +auth = ["dep:labadoor-auth"] diff --git a/labadoor/src/cli.rs b/labadoor/src/cli.rs index 840f13b..000b7fe 100644 --- a/labadoor/src/cli.rs +++ b/labadoor/src/cli.rs @@ -17,6 +17,8 @@ pub enum Command { CSV(CSV), #[cfg(feature = "gpio")] GPIO(GPIO), + #[cfg(feature = "auth")] + Auth(labadoor_auth::cli::Cli), } #[cfg(feature = "telegram")] diff --git a/labadoor/src/main.rs b/labadoor/src/main.rs index 9cb5f80..f471d44 100644 --- a/labadoor/src/main.rs +++ b/labadoor/src/main.rs @@ -34,5 +34,9 @@ fn main() { let gpio = config.get::("gpio").unwrap().to_config(); labadoor_gpio::gpio(gpio); } + #[cfg(feature = "auth")] + cli::Command::Auth(cli) => { + labadoor_auth::auth(cli); + } } }