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
- Fix numbers unnecessarily displayed in E notation

View File

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