From 6b179ec97632ced1bc5c620e6da3ce243366371b Mon Sep 17 00:00:00 2001 From: scoobybejesus Date: Sun, 25 Aug 2019 22:42:14 -0400 Subject: [PATCH] converted inv_costing_from_cmd_arg return type to a result; resolves #9 --- Cargo.lock | 10 +++++----- src/cli_user_choices.rs | 24 +++++++++--------------- src/main.rs | 6 +++++- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1943cd5..ed87a84 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -89,7 +89,7 @@ name = "bstr" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", @@ -164,7 +164,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -275,7 +275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -580,7 +580,7 @@ name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -679,7 +679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" diff --git a/src/cli_user_choices.rs b/src/cli_user_choices.rs index ee3c6d5..9d73c8e 100644 --- a/src/cli_user_choices.rs +++ b/src/cli_user_choices.rs @@ -142,25 +142,19 @@ pub fn choose_inventory_costing_method() -> InventoryCostingMethod { method } -pub fn inv_costing_from_cmd_arg(arg: String) -> InventoryCostingMethod { +pub fn inv_costing_from_cmd_arg(arg: String) -> Result<(InventoryCostingMethod), &'static str> { - let method = match _costing_method(arg) { - Ok(x) => {x}, - Err(err) => { process::exit(1) } - }; - - fn _costing_method(input: String) -> Result<(InventoryCostingMethod), Box> { - - match input.trim() { // Without .trim(), there's a hidden \n or something preventing the match - "1" => Ok(InventoryCostingMethod::LIFObyLotCreationDate), - "2" => Ok(InventoryCostingMethod::LIFObyLotBasisDate), - "3" => Ok(InventoryCostingMethod::FIFObyLotCreationDate), - "4" => Ok(InventoryCostingMethod::FIFObyLotBasisDate), - _ => { println!("Invalid choice. Please enter a valid number."); _costing_method(input) } + match arg.trim() { // Without .trim(), there's a hidden \n or something preventing the match + "1" => Ok(InventoryCostingMethod::LIFObyLotCreationDate), + "2" => Ok(InventoryCostingMethod::LIFObyLotBasisDate), + "3" => Ok(InventoryCostingMethod::FIFObyLotCreationDate), + "4" => Ok(InventoryCostingMethod::FIFObyLotBasisDate), + _ => { + println!("Invalid choice. Please enter a valid number."); + return Err("Invalid choice"); } } - method } pub fn elect_like_kind_treatment(cutoff_date_arg: &Option) -> (bool, String) { let election: bool; diff --git a/src/main.rs b/src/main.rs index 8a6a00a..c09034d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -232,7 +232,11 @@ fn main() -> Result<(), Box> { _ => { println!("Invalid choice for inventory costing method. Exiting."); process::exit(0); } } - let costing_method_choice = cli_user_choices::inv_costing_from_cmd_arg(args.inv_costing_method.into_string().unwrap()); + let costing_method_choice_r = cli_user_choices::inv_costing_from_cmd_arg(args.inv_costing_method.into_string().unwrap()); + if costing_method_choice_r.is_err() { + process::exit(1) + } + let costing_method_choice = costing_method_choice_r.unwrap(); settings = ImportProcessParameters { export_path: output_dir_path,