cargo updates

This commit is contained in:
Robin Appelman 2026-03-27 21:52:44 +01:00
commit ef24512c03
3 changed files with 388 additions and 862 deletions

1254
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -2,22 +2,22 @@
name = "mitemp-prometheus" name = "mitemp-prometheus"
version = "0.3.0" version = "0.3.0"
authors = ["Robin Appelman <robin@icewind.nl>"] authors = ["Robin Appelman <robin@icewind.nl>"]
edition = "2021" edition = "2024"
description = "Expose Xiaomi MI Temperature and Humidity Sensor to prometheus" description = "Expose Xiaomi MI Temperature and Humidity Sensor to prometheus"
license = "MIT/Apache-2.0" license = "MIT/Apache-2.0"
rust-version = "1.82.0" rust-version = "1.86.0"
[dependencies] [dependencies]
dotenvy = "0.15.7" dotenvy = "0.15.7"
main_error = "0.1.2" main_error = "0.1.2"
tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "signal"] }
warp = "0.3.7" warp = { version = "0.4.2", features = ["server"] }
mitemp = "0.4.0" mitemp = "0.5.0"
tokio-stream = { version = "0.1.17", features = ["net"] } tokio-stream = { version = "0.1.18", features = ["net"] }
btleplug = { version = "0.11.8", features = ["serde"] } btleplug = { version = "0.12.0", features = ["serde"] }
tracing = "0.1.41" tracing = "0.1.44"
tracing-subscriber = "0.3.19" tracing-subscriber = "0.3.23"
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
toml = "0.8.22" toml = "1.0.7"
secretfile = "0.1.1" secretfile = "0.1.1"
clap = { version = "4.5.39", features = ["derive"] } clap = { version = "4.5.61", features = ["derive"] }

View file

@ -1,8 +1,9 @@
mod config; mod config;
use crate::config::{Config, ListenConfig};
use btleplug::api::{Central, Manager as _}; use btleplug::api::{Central, Manager as _};
use btleplug::platform::Manager; use btleplug::platform::Manager;
use tracing::info; use clap::Parser;
use main_error::MainError; use main_error::MainError;
use mitemp::{listen, BDAddr, Sensor}; use mitemp::{listen, BDAddr, Sensor};
use std::collections::{BTreeMap, HashMap}; use std::collections::{BTreeMap, HashMap};
@ -10,13 +11,12 @@ use std::fmt::Write;
use std::fs::set_permissions; use std::fs::set_permissions;
use std::os::unix::fs::PermissionsExt; use std::os::unix::fs::PermissionsExt;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use tokio::net::UnixListener;
use tokio::signal::ctrl_c;
use tokio::{pin, spawn}; use tokio::{pin, spawn};
use tokio_stream::StreamExt; use tokio_stream::StreamExt;
use tracing::info;
use warp::Filter; use warp::Filter;
use clap::Parser;
use tokio::net::UnixListener;
use tokio_stream::wrappers::UnixListenerStream;
use crate::config::{Config, ListenConfig};
type Cache = Arc<Mutex<HashMap<BDAddr, Sensor>>>; type Cache = Arc<Mutex<HashMap<BDAddr, Sensor>>>;
@ -75,13 +75,21 @@ async fn main() -> Result<(), MainError> {
match config.listen { match config.listen {
ListenConfig::Ip { address, port } => { ListenConfig::Ip { address, port } => {
warp::serve(metrics).run((address, port)).await; warp::serve(metrics)
.bind((address, port))
.await
.graceful(async { ctrl_c().await.unwrap() })
.run()
.await;
} }
ListenConfig::Unix { socket: path } => { ListenConfig::Unix { socket: path } => {
let listener = UnixListener::bind(&path)?; let listener = UnixListener::bind(&path)?;
set_permissions(&path, PermissionsExt::from_mode(0o666))?; set_permissions(&path, PermissionsExt::from_mode(0o666))?;
let incoming = UnixListenerStream::new(listener); warp::serve(metrics)
warp::serve(metrics).run_incoming(incoming).await; .incoming(listener)
.graceful(async { ctrl_c().await.unwrap() })
.run()
.await;
} }
} }