Freak out instead of ignoring unexpected arguments
This commit is contained in:
parent
9bf7c69c03
commit
ef4738061e
@ -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
|
||||||
|
|
||||||
|
|||||||
51
src/main.rs
51
src/main.rs
@ -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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user