Stop using clap's 'derive' feature for a single argument
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
135a2c1611
commit
a81c0e631c
3 changed files with 20 additions and 13 deletions
|
@ -7,7 +7,7 @@ authors = ["Maxime “pep” Buquet <pep@bouah.net>"]
|
|||
license = "AGPL-3.0+"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4.3", features = [ "cargo", "derive" ] }
|
||||
clap = { version = "4.3", features = [ "cargo" ] }
|
||||
gitlab = "0.1511.0"
|
||||
hyper = { version = "0.14", features = [ "full" ] }
|
||||
jid = { version = "*", features = [ "serde" ] }
|
||||
|
|
28
src/main.rs
28
src/main.rs
|
@ -33,23 +33,16 @@ use std::net::{IpAddr, Ipv6Addr, SocketAddr};
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use clap::Parser;
|
||||
use clap::{command, value_parser, Arg};
|
||||
use hyper::{
|
||||
service::{make_service_fn, service_fn},
|
||||
Server,
|
||||
};
|
||||
use log::debug;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tokio::sync::mpsc;
|
||||
use xmpp_parsers::BareJid;
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(author, version, about, long_about = None)]
|
||||
struct Args {
|
||||
/// Config file path
|
||||
#[arg(short, long)]
|
||||
config: Option<PathBuf>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
struct Config {
|
||||
/// Account address
|
||||
|
@ -100,14 +93,23 @@ fn config_from_file(file: PathBuf) -> Result<Config, Error> {
|
|||
async fn main() -> Result<!, Error> {
|
||||
pretty_env_logger::init();
|
||||
|
||||
let args = Args::parse();
|
||||
let matches = command!()
|
||||
.arg(
|
||||
Arg::new("config")
|
||||
.short('c')
|
||||
.long("config")
|
||||
.required(false)
|
||||
.value_parser(value_parser!(PathBuf)),
|
||||
)
|
||||
.get_matches();
|
||||
|
||||
let config = {
|
||||
let path = match args.config {
|
||||
let path = match matches.get_one::<PathBuf>("config") {
|
||||
Some(path) => {
|
||||
if !path.starts_with("/") {
|
||||
std::env::current_dir()?.join(path)
|
||||
} else {
|
||||
path
|
||||
path.to_path_buf()
|
||||
}
|
||||
}
|
||||
None => {
|
||||
|
@ -123,6 +125,8 @@ async fn main() -> Result<!, Error> {
|
|||
}
|
||||
};
|
||||
|
||||
debug!("Using configuration file: {:?}", path);
|
||||
|
||||
match config_from_file(path) {
|
||||
Ok(config) => config,
|
||||
Err(err) => return Err(err),
|
||||
|
|
|
@ -64,6 +64,9 @@ impl XmppClient {
|
|||
.await
|
||||
}
|
||||
}
|
||||
Event::Disconnected => {
|
||||
debug!("XMPP Disconnected");
|
||||
}
|
||||
_ => {
|
||||
debug!("XMPP Event not supported")
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue