diff --git a/src/control.rs b/src/control.rs index 8e257e8..195a72c 100644 --- a/src/control.rs +++ b/src/control.rs @@ -40,7 +40,7 @@ impl Charger { pub fn start( mut ctx: Context, config: Config, - mut chargers: Vec, + chargers: Vec, ) -> Result { let mattermost = mattermost::Context::new(config.mattermost.base, &config.mattermost.token)?; let mut stream = observation::Stream::from_context(&mut ctx)?; @@ -125,7 +125,7 @@ fn handle_event( ctx: &mattermost::Context, channel: &Channel, ) -> Result<()> { - let send = |msg: &str| ctx.send_to_channel(channel, msg); + let send = |msg: &str| ctx.send_to_channel(channel, &format!("{}: {msg}", &charger.inner.id)); match evt.observation { Observation::PilotMode(mode) => match mode { diff --git a/src/main.rs b/src/main.rs index fefe829..7b17c03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -78,20 +78,21 @@ struct CLI { const SAVED_TOKEN_PATH: &str = ".easee_token"; fn login() -> Result<()> { - use std::io::Write; let stdin = std::io::stdin(); let mut stderr = std::io::stderr(); - let mut username = String::new(); - let mut password = String::new(); + let mut prompt = |key: &str, pr: &str| -> Result { + use std::io::Write; + if let Ok(var) = std::env::var(key) { return Ok(var) } + let mut buf = String::with_capacity(64); + write!(stderr, "{pr}: ")?; + stdin.read_line(&mut buf)?; + buf.truncate(buf.trim().len()); + Ok(buf) + }; - write!(stderr, "Username: ")?; - stdin.read_line(&mut username)?; - write!(stderr, "Password: ")?; - stdin.read_line(&mut password)?; - - let username = username.trim(); - let password = password.trim(); + let username = prompt("EASEE_USERNAME", "Username")?; + let password = prompt("EASEE_PASSWORD", "Password")?; let mut ctx = easee::api::Context::from_login(&username, &password)?; info!("Login successful.");