log: Initialize wrapper crate for using Logging
implementations
This commit is contained in:
parent
cc958d3d93
commit
e6f62255cb
7 changed files with 82 additions and 3 deletions
|
@ -10,4 +10,5 @@ members = [
|
||||||
"labadoor-open",
|
"labadoor-open",
|
||||||
"labadoor-acl",
|
"labadoor-acl",
|
||||||
"labadoor-logging",
|
"labadoor-logging",
|
||||||
|
"labadoor-log",
|
||||||
]
|
]
|
||||||
|
|
15
labadoor-log/Cargo.toml
Normal file
15
labadoor-log/Cargo.toml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "labadoor-log"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
clap = { version = "4.4.10", features = ["derive"] }
|
||||||
|
config = "0.13.4"
|
||||||
|
serde = { version = "1.0.193", features = ["derive"] }
|
||||||
|
toml = "0.8.8"
|
||||||
|
labadoor-csv = { path = "../labadoor-csv", optional = true }
|
||||||
|
labadoor-logging = { path = "../labadoor-logging"}
|
||||||
|
|
||||||
|
[features]
|
||||||
|
csv = ["dep:labadoor-csv"]
|
44
labadoor-log/src/lib.rs
Normal file
44
labadoor-log/src/lib.rs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
pub mod cli;
|
||||||
|
mod to_config;
|
||||||
|
use crate::to_config::ToConfig;
|
||||||
|
use labadoor_logging::Logging;
|
||||||
|
|
||||||
|
pub struct LogArgs {
|
||||||
|
pub username: String,
|
||||||
|
pub resource: String,
|
||||||
|
pub method: String,
|
||||||
|
}
|
||||||
|
macro_rules! add_cliargs {
|
||||||
|
($d:ident,$section:expr,$i:ident) => {
|
||||||
|
$d.add_source(config::File::from_str(
|
||||||
|
&format!("[{}]\n{}", $section, toml::to_string($i).unwrap()),
|
||||||
|
config::FileFormat::Toml,
|
||||||
|
))
|
||||||
|
.build()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
use config::{builder::DefaultState, ConfigBuilder};
|
||||||
|
pub fn log(cli: &cli::Cli, config: ConfigBuilder<DefaultState>) -> Result<(), ()> {
|
||||||
|
let mut ret = Err(());
|
||||||
|
let config = add_cliargs!(config, "log", cli);
|
||||||
|
let backends = config.get::<Vec<cli::Backend>>("log.backends").unwrap();
|
||||||
|
for backend in backends {
|
||||||
|
let logging = match backend {
|
||||||
|
#[cfg(feature = "csv")]
|
||||||
|
cli::Backend::CSV => config.get::<cli::CSV>("log.csv").unwrap().to_config().new(),
|
||||||
|
};
|
||||||
|
match &cli.command {
|
||||||
|
cli::Command::Append(cliargs) => {
|
||||||
|
logging.append(
|
||||||
|
"time.new()".to_string(),
|
||||||
|
cliargs.username.clone(),
|
||||||
|
cliargs.resource.clone(),
|
||||||
|
cliargs.method.clone(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
ret
|
||||||
|
}
|
14
labadoor-log/src/to_config.rs
Normal file
14
labadoor-log/src/to_config.rs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
use crate::cli::CSV;
|
||||||
|
|
||||||
|
pub trait ToConfig<T> {
|
||||||
|
fn to_config(&self) -> T;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "csv")]
|
||||||
|
impl ToConfig<labadoor_csv::CSVArgs> for CSV {
|
||||||
|
fn to_config(&self) -> labadoor_csv::CSVArgs {
|
||||||
|
labadoor_csv::CSVArgs {
|
||||||
|
path: self.path.clone(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,10 +7,10 @@ edition = "2021"
|
||||||
clap = { version = "4.3.10", features = ["derive"] }
|
clap = { version = "4.3.10", features = ["derive"] }
|
||||||
labadoor-telegram = { path = "../labadoor-telegram", optional = true }
|
labadoor-telegram = { path = "../labadoor-telegram", optional = true }
|
||||||
labadoor-matrix = { path = "../labadoor-matrix", optional = true }
|
labadoor-matrix = { path = "../labadoor-matrix", optional = true }
|
||||||
labadoor-csv = { path = "../labadoor-csv", optional = true }
|
|
||||||
labadoor-gpio = { path = "../labadoor-gpio", optional = true }
|
labadoor-gpio = { path = "../labadoor-gpio", optional = true }
|
||||||
labadoor-auth = { path = "../labadoor-auth", optional = true }
|
labadoor-auth = { path = "../labadoor-auth", optional = true }
|
||||||
labadoor-acl = { path = "../labadoor-acl" }
|
labadoor-open = { path = "../labadoor-open", optional = true}
|
||||||
|
labadoor-log = { path = "../labadoor-log", optional = true}
|
||||||
serde = { version = "1.0.164", features = ["derive"] }
|
serde = { version = "1.0.164", features = ["derive"] }
|
||||||
config = "0.13.3"
|
config = "0.13.3"
|
||||||
toml = "0.8.8"
|
toml = "0.8.8"
|
||||||
|
@ -18,6 +18,7 @@ toml = "0.8.8"
|
||||||
[features]
|
[features]
|
||||||
telegram = ["dep:labadoor-telegram"]
|
telegram = ["dep:labadoor-telegram"]
|
||||||
matrix = ["dep:labadoor-matrix"]
|
matrix = ["dep:labadoor-matrix"]
|
||||||
csv = ["dep:labadoor-csv"]
|
|
||||||
gpio = ["dep:labadoor-gpio"]
|
gpio = ["dep:labadoor-gpio"]
|
||||||
auth = ["dep:labadoor-auth"]
|
auth = ["dep:labadoor-auth"]
|
||||||
|
open = ["dep:labadoor-open"]
|
||||||
|
log = ["dep:labadoor-log"]
|
||||||
|
|
|
@ -17,6 +17,8 @@ pub enum Command {
|
||||||
GPIO(GPIO),
|
GPIO(GPIO),
|
||||||
#[cfg(feature = "auth")]
|
#[cfg(feature = "auth")]
|
||||||
Auth(labadoor_auth::cli::Cli),
|
Auth(labadoor_auth::cli::Cli),
|
||||||
|
#[cfg(feature = "log")]
|
||||||
|
Log(labadoor_log::cli::Cli),
|
||||||
#[cfg(feature = "open")]
|
#[cfg(feature = "open")]
|
||||||
Open(Open),
|
Open(Open),
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,8 @@ fn main() -> ExitCode {
|
||||||
let open = config.get::<cli::Open>("open").unwrap().to_config();
|
let open = config.get::<cli::Open>("open").unwrap().to_config();
|
||||||
module_result = labadoor_open::open(open);
|
module_result = labadoor_open::open(open);
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "log")]
|
||||||
|
cli::Command::Log(cli) => module_result = labadoor_log::log(&cli, config),
|
||||||
#[cfg(feature = "auth")]
|
#[cfg(feature = "auth")]
|
||||||
cli::Command::Auth(cli) => module_result = labadoor_auth::auth(&cli, config),
|
cli::Command::Auth(cli) => module_result = labadoor_auth::auth(&cli, config),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue