Don't panic on wrong argument, instead display error message
This commit is contained in:
parent
8fa9d7dca0
commit
628b6372aa
23
src/main.rs
23
src/main.rs
|
@ -1,5 +1,6 @@
|
||||||
use std::env::{set_current_dir as cd, set_var};
|
use std::env::{set_current_dir as cd, set_var};
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
use structopt::clap::ErrorKind as ClapError;
|
||||||
// For UNIX extended metadata
|
// For UNIX extended metadata
|
||||||
|
|
||||||
mod cli;
|
mod cli;
|
||||||
|
@ -11,11 +12,27 @@ mod task;
|
||||||
use log::Context;
|
use log::Context;
|
||||||
|
|
||||||
fn main() -> Result<(), std::io::Error> {
|
fn main() -> Result<(), std::io::Error> {
|
||||||
|
let mut context = Context::new();
|
||||||
|
|
||||||
// TODO: use StructOpt::from_iter_safe so we can hook on Cli error
|
// TODO: use StructOpt::from_iter_safe so we can hook on Cli error
|
||||||
// to display additional unknown_arg error message.
|
// to display additional unknown_arg error message.
|
||||||
let cmd = cli::Cli::from_args();
|
//let cmd = cli::Cli::from_args();
|
||||||
|
let res = cli::Cli::from_iter_safe(std::env::args());
|
||||||
let mut context = Context::new();
|
if res.is_err() {
|
||||||
|
let e = res.unwrap_err();
|
||||||
|
match &e.kind {
|
||||||
|
ClapError::UnknownArgument => {
|
||||||
|
context.insert("$i18n_arg".to_string(), e.info.unwrap().first().unwrap().to_string());
|
||||||
|
log::error("unknown_arg", &context);
|
||||||
|
std::process::exit(1);
|
||||||
|
},
|
||||||
|
/*ClapError::HelpDisplayed {
|
||||||
|
e.exit()
|
||||||
|
}*/
|
||||||
|
_ => e.exit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let cmd = res.unwrap();
|
||||||
|
|
||||||
let basedir = cmd.basedir();
|
let basedir = cmd.basedir();
|
||||||
context.insert("$i18n_basedir".to_string(), basedir.to_str().unwrap().to_string());
|
context.insert("$i18n_basedir".to_string(), basedir.to_str().unwrap().to_string());
|
||||||
|
|
Loading…
Reference in New Issue