From 3b36852749fd1cafeeb8824fee85595b90ace03a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Sun, 25 Sep 2022 00:35:25 +0200 Subject: [PATCH] Allow optional nick in config file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- sendxmpp.toml | 3 ++- src/main.rs | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sendxmpp.toml b/sendxmpp.toml index 18bee7f..750ee98 100644 --- a/sendxmpp.toml +++ b/sendxmpp.toml @@ -1,4 +1,5 @@ -# jid and password exactly like this, nothing else +# jid and password exactly like this jid = "jid@example.org" password = "sOmePa55W0rD" +# nick = "foobar" # optional nick for Multi-User Chat diff --git a/src/main.rs b/src/main.rs index e36cf65..7863536 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,6 +25,7 @@ use anyhow::{anyhow, bail, Result}; struct Config { jid: String, password: String, + nick: Option, } fn parse_cfg>(path: P) -> Result { @@ -169,11 +170,12 @@ async fn main() { for recipient in recipients { if opts.muc { - let nick = { - let opt = opts.nick.clone(); - let node = BareJid::from_str(cfg.jid.as_str()).unwrap().node; - opt.or(node).die("couldn't find a nick to use") - }; + let nick = opts + .nick + .clone() + .or(cfg.nick.clone()) + .or_else(|| BareJid::from_str(cfg.jid.as_str()).unwrap().node) + .die("couldn't find a nick to use"); let participant = match recipient.clone() { Jid::Full(_) => die!("Invalid room address"), Jid::Bare(bare) => bare.with_resource(nick.clone()),