diff --git a/labadoor-csv/src/lib.rs b/labadoor-csv/src/lib.rs index 9d267c8..6054952 100644 --- a/labadoor-csv/src/lib.rs +++ b/labadoor-csv/src/lib.rs @@ -62,11 +62,7 @@ fn auth_user(username: String, resource: String) -> Result<(), ()> { return ret; } -pub fn csv() { - let args: Vec = std::env::args().collect(); - let method = String::from(&args[1]); - let identifier = String::from(&args[2]); - let resource_shortcut = args[3].parse::().unwrap(); +pub fn csv(path: String, method: String, identifier: String, resource_shortcut: i8) { if let Ok(username) = get_username(method, identifier) { if let Ok(resource_name) = get_resource_name(username.clone(), resource_shortcut) { diff --git a/labadoor/src/cli.rs b/labadoor/src/cli.rs index 85edeb1..827c747 100644 --- a/labadoor/src/cli.rs +++ b/labadoor/src/cli.rs @@ -14,7 +14,7 @@ pub enum Command { #[cfg(feature = "matrix")] Matrix(Matrix), #[cfg(feature = "csv")] - CSV, + CSV(CSV), #[cfg(feature = "gpio")] GPIO(GPIO), } @@ -35,6 +35,21 @@ pub struct Matrix { pub password: Option, } +#[cfg(feature = "csv")] +#[derive(Deserialize, Parser, Debug)] +pub struct CSV { + #[clap(short, long)] + #[arg(default_value = "Some(String::from(\"/etc/labadoor\"))")] + pub path: Option, + #[clap(short, long)] + pub method: String, + #[clap(short, long)] + pub identifier: String, + // #[cfg(feature = "multiple_resources")] + #[clap(short, long)] + pub resource_shortcut: i8, +} + #[cfg(feature = "gpio")] #[derive(Deserialize, Parser, Debug)] pub struct GPIO { diff --git a/labadoor/src/main.rs b/labadoor/src/main.rs index a57c9df..7952335 100644 --- a/labadoor/src/main.rs +++ b/labadoor/src/main.rs @@ -19,8 +19,14 @@ fn main() { labadoor_matrix::matrix(matrix.username.unwrap(), matrix.password.unwrap()); } #[cfg(feature = "csv")] - cli::Command::CSV => { - labadoor_csv::csv(); + cli::Command::CSV(_) => { + let csv = config.get::("csv").unwrap(); + labadoor_csv::csv( + csv.path.unwrap(), + csv.method.unwrap(), + csv.identifier.unwrap(), + csv.resource_shortcut.unwrap(), + ); } #[cfg(feature = "gpio")] cli::Command::GPIO(_) => {