From a07ff25a1ea62c4df5bd7ed4dedc5af54f65c549 Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Fri, 30 Jun 2023 20:19:29 +0300 Subject: [PATCH] Read authentication tokens for bots from file and environment variables --- labadoor/Cargo.toml | 2 ++ labadoor/config.toml | 6 ++++++ labadoor/src/cli.rs | 5 +++-- labadoor/src/main.rs | 11 +++++++++-- 4 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 labadoor/config.toml diff --git a/labadoor/Cargo.toml b/labadoor/Cargo.toml index a367900..6325824 100644 --- a/labadoor/Cargo.toml +++ b/labadoor/Cargo.toml @@ -9,6 +9,8 @@ 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 } +serde = { version = "1.0.164", features = ["derive"] } +config = "0.13.3" [features] telegram = [ "dep:labadoor-telegram" ] diff --git a/labadoor/config.toml b/labadoor/config.toml new file mode 100644 index 0000000..8222edf --- /dev/null +++ b/labadoor/config.toml @@ -0,0 +1,6 @@ +[telegram] +token = "" + +[matrix] +username = "" +password = "" diff --git a/labadoor/src/cli.rs b/labadoor/src/cli.rs index d654aae..1ae060f 100644 --- a/labadoor/src/cli.rs +++ b/labadoor/src/cli.rs @@ -1,4 +1,5 @@ use clap::Parser; +use serde::Deserialize; #[derive(Parser, Debug)] pub struct Cli { @@ -19,14 +20,14 @@ pub enum Command { } #[cfg(feature = "telegram")] -#[derive(Parser, Debug)] +#[derive(Deserialize, Parser, Debug)] pub struct Telegram { #[clap(short, long)] pub token: Option, } #[cfg(feature = "matrix")] -#[derive(Parser, Debug)] +#[derive(Deserialize, Parser, Debug)] pub struct Matrix { #[clap(short, long)] pub username: Option, diff --git a/labadoor/src/main.rs b/labadoor/src/main.rs index c7e2af9..20d0898 100644 --- a/labadoor/src/main.rs +++ b/labadoor/src/main.rs @@ -2,14 +2,21 @@ mod cli; fn main() { let cli = cli::parse(); + let config = config::Config::builder() + .add_source(config::File::with_name("./config.toml").required(false)) + .add_source(config::Environment::with_prefix("LABADOOR").separator("_")) + .build() + .unwrap(); match &cli.command { #[cfg(feature = "telegram")] cli::Command::Telegram(_) => { - labadoor_telegram::telegram(); + let telegram = config.get::("telegram").unwrap(); + labadoor_telegram::telegram(telegram.token.unwrap()); } #[cfg(feature = "matrix")] cli::Command::Matrix(_) => { - labadoor_matrix::matrix(); + let matrix = config.get::("matrix").unwrap(); + labadoor_matrix::matrix(matrix.username.unwrap(), matrix.password.unwrap()); } #[cfg(feature = "csv")] cli::Command::CSV => {