From 07e2025b03e18436e99248c6a0243cd0e2a1c1d7 Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Thu, 18 May 2023 17:11:19 -0700 Subject: [PATCH 1/6] add dependency_manager --- Cargo.lock | 22 ++++++++++--- Cargo.toml | 1 + src/dependency_manager.rs | 68 +++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 4 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 src/dependency_manager.rs diff --git a/Cargo.lock b/Cargo.lock index 3a2b25f41..594eade71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2764,6 +2764,7 @@ dependencies = [ "semver 1.0.17", "serde", "serde-aux", + "serde_derive", "serde_json", "sqlx", "sysinfo", @@ -4289,9 +4290,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.156" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] @@ -4328,13 +4329,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.156" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2 1.0.52", "quote 1.0.26", - "syn 1.0.109", + "syn 2.0.12", ] [[package]] @@ -5119,6 +5120,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927" +dependencies = [ + "proc-macro2 1.0.52", + "quote 1.0.26", + "unicode-ident", +] + [[package]] name = "sync_wrapper" version = "0.1.2" diff --git a/Cargo.toml b/Cargo.toml index 27b064abe..1f57e6993 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,6 +93,7 @@ openssl = { version = "0.10.45", features = ["vendored"], optional = true } flate2 = "1.0.24" tar = "0.4.38" unrar = "0.4.4" +serde_derive = "1.0.163" [dependencies.uuid] version = "1.1.2" features = [ diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs new file mode 100644 index 000000000..fdd49ba0b --- /dev/null +++ b/src/dependency_manager.rs @@ -0,0 +1,68 @@ +extern crate serde_json; + +use std::fs::File; +use std::collections::HashMap; +use std::io::ErrorKind; + +const STATE_FILE_PATH: &str = "./bin/dependencies.json"; + +pub struct DependencyManager { + registered_paths: HashMap, +} + +impl DependencyManager { + fn new() -> DependencyManager { + let mut d = DependencyManager { + registered_paths: HashMap::new(), + }; + d.load(); + d + } + + fn save(&self) { + let file = File::create(STATE_FILE_PATH); + match file { + Ok(file) => { + serde_json::to_writer(file, &self.registered_paths).unwrap(); + } + Err(_) => { + println!("Failed to save dependencies"); + } + } + } + + fn load(&mut self) { + let file = File::open(STATE_FILE_PATH); + match file { + Ok(file) => { + let dependencies: HashMap = serde_json::from_reader(file).unwrap(); + self.registered_paths = dependencies; + } + Err(error) => { + match error.kind() { + ErrorKind::NotFound => { + match File::create(STATE_FILE_PATH) { + Ok(_) => {}, + Err(e) => panic!("Problem creating the file: {:?}", e), + } + } + other_error => { + panic!("Problem opening the file: {:?}", other_error); + } + } + } + } + } + + pub fn register(&mut self, name: String, path: String) { + self.registered_paths.insert(name, path); + self.save(); + } + + pub fn get(&self, name: String) -> &String { + match self.registered_paths.get((&name).as_ref()) { + Some(path) => path, + None => panic!("Dependency {} not found", name) + } + } +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index d5bab2b2a..2e644f471 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -84,6 +84,7 @@ pub mod tauri_export; mod traits; pub mod types; pub mod util; +mod dependency_manager; #[derive(Clone)] pub struct AppState { From 84daabb9d8208afb36bffb1f918987d0795acfef Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Sat, 20 May 2023 18:21:43 -0700 Subject: [PATCH 2/6] rework dependency_manager to use Result instead of panicking --- src/dependency_manager.rs | 84 ++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs index fdd49ba0b..6361d3105 100644 --- a/src/dependency_manager.rs +++ b/src/dependency_manager.rs @@ -1,68 +1,80 @@ extern crate serde_json; -use std::fs::File; use std::collections::HashMap; -use std::io::ErrorKind; +use std::fs::File; +use std::io; +use std::io::{ErrorKind}; const STATE_FILE_PATH: &str = "./bin/dependencies.json"; +pub enum DependencyManagerError { + IoError(io::Error), + SerdeError(serde_json::Error), + NotFoundError, +} + pub struct DependencyManager { - registered_paths: HashMap, + registered_paths: Option>, } impl DependencyManager { fn new() -> DependencyManager { - let mut d = DependencyManager { - registered_paths: HashMap::new(), - }; - d.load(); - d + DependencyManager { + registered_paths: None, + } } - fn save(&self) { + fn save(&self) -> Result<(), DependencyManagerError> { let file = File::create(STATE_FILE_PATH); - match file { - Ok(file) => { - serde_json::to_writer(file, &self.registered_paths).unwrap(); - } - Err(_) => { - println!("Failed to save dependencies"); - } + return match file { + Ok(file) => match serde_json::to_writer(file, &self.registered_paths) { + Ok(_) => Ok(()), + Err(e) => Err(SaveError::SerdeError(e)) + }, + Err(e) => Err(SaveError::IoError(e)) } } - fn load(&mut self) { + fn load(&mut self) -> Result<(), DependencyManagerError> { + if let Some(_) = self.registered_paths { + return Ok(()) + } + let file = File::open(STATE_FILE_PATH); match file { Ok(file) => { let dependencies: HashMap = serde_json::from_reader(file).unwrap(); - self.registered_paths = dependencies; + self.registered_paths = Option::from(dependencies); + Ok(()) } - Err(error) => { - match error.kind() { - ErrorKind::NotFound => { - match File::create(STATE_FILE_PATH) { - Ok(_) => {}, - Err(e) => panic!("Problem creating the file: {:?}", e), - } - } - other_error => { - panic!("Problem opening the file: {:?}", other_error); - } + Err(error) => return match error.kind() { + ErrorKind::NotFound => match File::create(STATE_FILE_PATH) { + Ok(_) => Ok(()), + Err(e) => Err(DependencyManagerError(e)), + }, + other_error => { + Err(DependencyManagerError(io::Error::from(other_error))) } } } } - pub fn register(&mut self, name: String, path: String) { - self.registered_paths.insert(name, path); - self.save(); + pub fn register(&mut self, name: String, path: String) -> Result<(), DependencyManagerError> { + self.load()?; + + match &self.registered_paths { + Some(mut hashMap) => hashMap.insert(name, path), + None => () + } + self.save() } - pub fn get(&self, name: String) -> &String { + pub fn get(&mut self, name: String) -> Result<&String, E> { + self.load()?; + match self.registered_paths.get((&name).as_ref()) { - Some(path) => path, - None => panic!("Dependency {} not found", name) + Some(path) => Ok(path), + None => Err(DependencyManagerError::NotFoundError), } } -} \ No newline at end of file +} From b6d537c16216dfd0793ec09c727c2d915af413c4 Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Sat, 20 May 2023 18:22:02 -0700 Subject: [PATCH 3/6] change import --- src/dependency_manager.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs index 6361d3105..7c09feaef 100644 --- a/src/dependency_manager.rs +++ b/src/dependency_manager.rs @@ -1,4 +1,4 @@ -extern crate serde_json; +use serde_json; use std::collections::HashMap; use std::fs::File; From 2f71f88c269eddb21ec62421413da524734a5139 Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Sat, 20 May 2023 18:23:25 -0700 Subject: [PATCH 4/6] store file_path in the struct instead of global variable --- src/dependency_manager.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs index 7c09feaef..e53f8f167 100644 --- a/src/dependency_manager.rs +++ b/src/dependency_manager.rs @@ -5,8 +5,6 @@ use std::fs::File; use std::io; use std::io::{ErrorKind}; -const STATE_FILE_PATH: &str = "./bin/dependencies.json"; - pub enum DependencyManagerError { IoError(io::Error), SerdeError(serde_json::Error), @@ -15,17 +13,19 @@ pub enum DependencyManagerError { pub struct DependencyManager { registered_paths: Option>, + file_path: String, } impl DependencyManager { - fn new() -> DependencyManager { + fn new(file_path: &str) -> DependencyManager { DependencyManager { registered_paths: None, + file_path: String::from(file_path), } } fn save(&self) -> Result<(), DependencyManagerError> { - let file = File::create(STATE_FILE_PATH); + let file = File::create(&self.file_path); return match file { Ok(file) => match serde_json::to_writer(file, &self.registered_paths) { Ok(_) => Ok(()), @@ -40,7 +40,7 @@ impl DependencyManager { return Ok(()) } - let file = File::open(STATE_FILE_PATH); + let file = File::open(&self.file_path); match file { Ok(file) => { let dependencies: HashMap = serde_json::from_reader(file).unwrap(); @@ -48,7 +48,7 @@ impl DependencyManager { Ok(()) } Err(error) => return match error.kind() { - ErrorKind::NotFound => match File::create(STATE_FILE_PATH) { + ErrorKind::NotFound => match File::create(&self.file_path) { Ok(_) => Ok(()), Err(e) => Err(DependencyManagerError(e)), }, From 34f7d165ec357559827b51efdf819de13bc1ecee Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Sat, 20 May 2023 19:54:27 -0700 Subject: [PATCH 5/6] fix compilation errors --- src/dependency_manager.rs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs index e53f8f167..0c4b6bb23 100644 --- a/src/dependency_manager.rs +++ b/src/dependency_manager.rs @@ -29,9 +29,9 @@ impl DependencyManager { return match file { Ok(file) => match serde_json::to_writer(file, &self.registered_paths) { Ok(_) => Ok(()), - Err(e) => Err(SaveError::SerdeError(e)) + Err(e) => Err(DependencyManagerError::SerdeError(e)) }, - Err(e) => Err(SaveError::IoError(e)) + Err(e) => Err(DependencyManagerError::IoError(e)) } } @@ -50,10 +50,10 @@ impl DependencyManager { Err(error) => return match error.kind() { ErrorKind::NotFound => match File::create(&self.file_path) { Ok(_) => Ok(()), - Err(e) => Err(DependencyManagerError(e)), + Err(e) => Err(DependencyManagerError::IoError(e)), }, other_error => { - Err(DependencyManagerError(io::Error::from(other_error))) + Err(DependencyManagerError::IoError(io::Error::from(other_error))) } } } @@ -62,19 +62,22 @@ impl DependencyManager { pub fn register(&mut self, name: String, path: String) -> Result<(), DependencyManagerError> { self.load()?; - match &self.registered_paths { - Some(mut hashMap) => hashMap.insert(name, path), - None => () - } + match self.registered_paths { + Some(ref mut hashMap) => hashMap.insert(name, path), + None => return Ok(()) + }; self.save() } - pub fn get(&mut self, name: String) -> Result<&String, E> { + pub fn get(&mut self, name: &String) -> Result<&str, DependencyManagerError> { self.load()?; - match self.registered_paths.get((&name).as_ref()) { - Some(path) => Ok(path), - None => Err(DependencyManagerError::NotFoundError), + match &self.registered_paths { + Some(hashMap) => match hashMap.get::(name) { + Some(&ref path) => Ok(&*path), + None => Err(DependencyManagerError::NotFoundError), + }, + None => panic!("No registered paths") } } } From a65db25fb875bf7d9d561c3b96fe6f8c7a8cc89c Mon Sep 17 00:00:00 2001 From: Hanmin Kim Date: Sat, 24 Jun 2023 23:44:26 -0700 Subject: [PATCH 6/6] fix clippy issues --- Cargo.lock | 161 +++++++++++++++++++++++++++++--------- src/dependency_manager.rs | 30 ++++--- 2 files changed, 138 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 70c243890..f48cc00f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -230,7 +230,7 @@ dependencies = [ "asn1-rs-impl", "displaydoc", "nom", - "num-traits", + "num-traits 0.2.15", "rusticata-macros", "thiserror", "time 0.3.20", @@ -317,7 +317,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" dependencies = [ - "num-traits", + "num-traits 0.2.15", ] [[package]] @@ -686,7 +686,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-integer", - "num-traits", + "num-traits 0.2.15", "time 0.1.45", "wasm-bindgen", "winapi", @@ -1184,7 +1184,7 @@ dependencies = [ "deno_core", "deno_web", "elliptic-curve 0.12.3", - "num-traits", + "num-traits 0.2.15", "once_cell", "p256 0.11.1", "p384 0.11.2", @@ -1345,7 +1345,7 @@ dependencies = [ "base64 0.13.1", "deno_core", "hex", - "num-bigint", + "num-bigint 0.4.3", "rusqlite", "serde", ] @@ -1416,10 +1416,10 @@ dependencies = [ "libz-sys", "md-5", "md4", - "num-bigint", + "num-bigint 0.4.3", "num-bigint-dig", "num-integer", - "num-traits", + "num-traits 0.2.15", "once_cell", "p224", "p256 0.13.2", @@ -1661,8 +1661,8 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint", - "num-traits", + "num-bigint 0.4.3", + "num-traits 0.2.15", "rusticata-macros", ] @@ -1756,7 +1756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd4dda8a1b920e8be367aeaad035753d21bb69b3c50515afb41ab1eefbb886b5" dependencies = [ "bumpalo", - "num-bigint", + "num-bigint 0.4.3", "rustc-hash", "swc_atoms", "swc_common", @@ -1773,7 +1773,7 @@ checksum = "b5638f6d17447bc0ffc46354949ee366847e83450e2a07895862942085cc9761" dependencies = [ "digest 0.10.6", "num-bigint-dig", - "num-traits", + "num-traits 0.2.15", "pkcs8 0.10.2", "rfc6979 0.4.0", "sha2", @@ -1941,6 +1941,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "enum_primitive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" +dependencies = [ + "num-traits 0.1.43", +] + [[package]] name = "err-derive" version = "0.3.1" @@ -3183,6 +3192,7 @@ dependencies = [ "tracing-error", "tracing-subscriber", "ts-rs", + "unrar", "url", "uuid", "walkdir", @@ -3471,6 +3481,32 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +dependencies = [ + "num-bigint 0.1.44", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits 0.2.15", +] + +[[package]] +name = "num-bigint" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" +dependencies = [ + "num-integer", + "num-traits 0.2.15", + "rand 0.4.6", + "rustc-serialize", +] + [[package]] name = "num-bigint" version = "0.4.3" @@ -3479,7 +3515,7 @@ checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg 1.1.0", "num-integer", - "num-traits", + "num-traits 0.2.15", "rand 0.8.5", "serde", ] @@ -3495,13 +3531,23 @@ dependencies = [ "libm", "num-integer", "num-iter", - "num-traits", + "num-traits 0.2.15", "rand 0.8.5", "serde", "smallvec", "zeroize", ] +[[package]] +name = "num-complex" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" +dependencies = [ + "num-traits 0.2.15", + "rustc-serialize", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -3509,7 +3555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg 1.1.0", - "num-traits", + "num-traits 0.2.15", ] [[package]] @@ -3520,7 +3566,28 @@ checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg 1.1.0", "num-integer", - "num-traits", + "num-traits 0.2.15", +] + +[[package]] +name = "num-rational" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" +dependencies = [ + "num-bigint 0.1.44", + "num-integer", + "num-traits 0.2.15", + "rustc-serialize", +] + +[[package]] +name = "num-traits" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" +dependencies = [ + "num-traits 0.2.15", ] [[package]] @@ -3643,7 +3710,7 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" dependencies = [ - "num-traits", + "num-traits 0.2.15", ] [[package]] @@ -4499,7 +4566,7 @@ dependencies = [ "num-bigint-dig", "num-integer", "num-iter", - "num-traits", + "num-traits 0.2.15", "pkcs1", "pkcs8 0.9.0", "rand_core 0.6.4", @@ -4535,6 +4602,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-serialize" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" + [[package]] name = "rustc_version" version = "0.2.3" @@ -4869,7 +4942,7 @@ checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2 1.0.58", "quote 1.0.26", - "syn 2.0.12", + "syn 2.0.16", ] [[package]] @@ -4924,7 +4997,7 @@ checksum = "613ea53a4a3a9abe264072a12989a67cf8988619e189fd5d1220dbe18e366d04" dependencies = [ "bytes", "derive_more", - "num-bigint", + "num-bigint 0.4.3", "serde", "serde_bytes", "smallvec", @@ -5025,8 +5098,8 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ - "num-bigint", - "num-traits", + "num-bigint 0.4.3", + "num-traits 0.2.15", "thiserror", "time 0.3.20", ] @@ -5332,7 +5405,7 @@ dependencies = [ "either", "from_variant", "new_debug_unreachable", - "num-bigint", + "num-bigint 0.4.3", "once_cell", "rustc-hash", "serde", @@ -5380,7 +5453,7 @@ checksum = "b5cf9dd351d0c285dcd36535267953a18995d4dda0cbe34ac9d1df61aa415b26" dependencies = [ "bitflags 2.3.1", "is-macro", - "num-bigint", + "num-bigint 0.4.3", "scoped-tls", "serde", "string_enum", @@ -5396,7 +5469,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66d1ea16bb9b7ea6f87f17325742ff256fcbd65b188af57c2bf415fe4afc945" dependencies = [ "memchr", - "num-bigint", + "num-bigint 0.4.3", "once_cell", "rustc-hash", "serde", @@ -5455,7 +5528,7 @@ checksum = "f0a3fcfe3d83dd445cbd9321882e47b467594433d9a21c4d6c37a27f534bb89e" dependencies = [ "either", "lexical", - "num-bigint", + "num-bigint 0.4.3", "serde", "smallvec", "smartstring", @@ -5602,7 +5675,7 @@ version = "0.90.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce3ac941ae1d6c7e683aa375fc71fbf58df58b441f614d757fbb10554936ca2" dependencies = [ - "num-bigint", + "num-bigint 0.4.3", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -5691,17 +5764,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927" -dependencies = [ - "proc-macro2 1.0.52", - "quote 1.0.26", - "unicode-ident", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -6382,6 +6444,31 @@ dependencies = [ "subtle", ] +[[package]] +name = "unrar" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433cea4f0b7bec88d47becb380887b8786a3cfb1c82e1ef9d32a682ba6801814" +dependencies = [ + "bitflags 1.3.2", + "enum_primitive", + "lazy_static", + "num", + "regex", + "unrar_sys", +] + +[[package]] +name = "unrar_sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0009399408dc0bcc5c8910672544fceceeba18b91f741ff943916e917d982c60" +dependencies = [ + "cc", + "libc", + "winapi", +] + [[package]] name = "untrusted" version = "0.7.1" diff --git a/src/dependency_manager.rs b/src/dependency_manager.rs index 0c4b6bb23..0d421fb00 100644 --- a/src/dependency_manager.rs +++ b/src/dependency_manager.rs @@ -1,14 +1,12 @@ -use serde_json; - use std::collections::HashMap; use std::fs::File; use std::io; use std::io::{ErrorKind}; pub enum DependencyManagerError { - IoError(io::Error), - SerdeError(serde_json::Error), - NotFoundError, + Io(io::Error), + Serde(serde_json::Error), + NotFound, } pub struct DependencyManager { @@ -26,17 +24,17 @@ impl DependencyManager { fn save(&self) -> Result<(), DependencyManagerError> { let file = File::create(&self.file_path); - return match file { + match file { Ok(file) => match serde_json::to_writer(file, &self.registered_paths) { Ok(_) => Ok(()), - Err(e) => Err(DependencyManagerError::SerdeError(e)) + Err(e) => Err(DependencyManagerError::Serde(e)) }, - Err(e) => Err(DependencyManagerError::IoError(e)) + Err(e) => Err(DependencyManagerError::Io(e)) } } fn load(&mut self) -> Result<(), DependencyManagerError> { - if let Some(_) = self.registered_paths { + if self.registered_paths.is_some() { return Ok(()) } @@ -47,13 +45,13 @@ impl DependencyManager { self.registered_paths = Option::from(dependencies); Ok(()) } - Err(error) => return match error.kind() { + Err(error) => match error.kind() { ErrorKind::NotFound => match File::create(&self.file_path) { Ok(_) => Ok(()), - Err(e) => Err(DependencyManagerError::IoError(e)), + Err(e) => Err(DependencyManagerError::Io(e)), }, other_error => { - Err(DependencyManagerError::IoError(io::Error::from(other_error))) + Err(DependencyManagerError::Io(io::Error::from(other_error))) } } } @@ -63,7 +61,7 @@ impl DependencyManager { self.load()?; match self.registered_paths { - Some(ref mut hashMap) => hashMap.insert(name, path), + Some(ref mut hash_map) => hash_map.insert(name, path), None => return Ok(()) }; self.save() @@ -73,9 +71,9 @@ impl DependencyManager { self.load()?; match &self.registered_paths { - Some(hashMap) => match hashMap.get::(name) { - Some(&ref path) => Ok(&*path), - None => Err(DependencyManagerError::NotFoundError), + Some(hash_map) => match hash_map.get::(name) { + Some(path) => Ok(path), + None => Err(DependencyManagerError::NotFound), }, None => panic!("No registered paths") }