Freak out instead of ignoring unexpected arguments

This commit is contained in:
Kasper 2021-07-03 01:55:10 +02:00
parent 9bf7c69c03
commit ef4738061e
2 changed files with 39 additions and 17 deletions

View File

@ -1,3 +1,8 @@
## Next
- Freak out instead of ignoring unexpected arguments
- Add support for non-US "metre" and "litre" spellings
- Fix decimeter parsed as centimeter
## 1.5.1 - 2021 Jun 10 ## 1.5.1 - 2021 Jun 10
- Fix numbers unnecessarily displayed in E notation - Fix numbers unnecessarily displayed in E notation

View File

@ -1,27 +1,44 @@
use cpc::eval; use cpc::eval;
use cpc::units::Unit; use cpc::units::Unit;
use std::process::exit;
/// cpc CLI interface /// CLI interface
fn main() { fn main() {
use std::env; use std::env;
let mut args: Vec<String> = env::args().collect(); let mut args = env::args().into_iter();
args.next();
let mut verbose = false; let mut verbose = false;
if let Some(pos) = args.iter().position(|x| x == "-v" || x == "--verbose") { let mut expression_opt = None;
verbose = true; for arg in args {
args.remove(pos); match arg.as_str() {
} "-v" | "--verbose" => verbose = true,
if args.len() >= 2 { _ => {
match eval(&args[1], true, Unit::Celsius, verbose) { if expression_opt == None {
Ok(answer) => { expression_opt = Some(arg);
if !verbose { } else {
println!("{}", answer); eprintln!("Unexpected argument: {}", arg);
exit(1);
} }
}, }
Err(e) => { }
println!("{}", e) }
}, match expression_opt {
Some(expression) => {
match eval(&expression, true, Unit::Celsius, verbose) {
Ok(answer) => {
if !verbose {
println!("{}", answer);
}
},
Err(e) => {
eprintln!("{}", e);
exit(1);
},
}
}
None => {
eprintln!("No argument supplied");
exit(1);
} }
} else {
eprintln!("No argument supplied");
} }
} }