From abaf3015f638ccd632c84b0cc49e9a4ccc6887ac Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Thu, 15 Oct 2015 21:14:16 +0200 Subject: [PATCH 1/2] Even Better NonExistentDependency Errors Why didn't I do this before? --- src/manifest.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/manifest.rs b/src/manifest.rs index d883d54652..b8297dc0c1 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -20,14 +20,14 @@ quick_error! { display("Your Cargo.toml is missing.") } /// The TOML table could not be found. - NonExistentTable(name: String) { + NonExistentTable(table: String) { description("non existent table") - display("The table `{}` could not be found.", name) + display("The table `{}` could not be found.", table) } /// The dependency could not be found. - NonExistentDependency(name: String) { + NonExistentDependency(name: String, table: String) { description("non existent dependency") - display("The dependency `{}` could not be found.", name) + display("The dependency `{}` could not be found in `{}`.", name, table) } } } @@ -192,7 +192,7 @@ impl Manifest { Entry::Occupied(entry) => { match *entry.into_mut() { toml::Value::Table(ref mut deps) => { - deps.remove(name).map(|_| ()).ok_or(ManifestError::NonExistentDependency(name.into())) + deps.remove(name).map(|_| ()).ok_or(ManifestError::NonExistentDependency(name.into(), table.into())) } _ => Err(ManifestError::NonExistentTable(table.into())) } From 5fcb0a744577a618e009e39c84d4bc38a2910afe Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Thu, 15 Oct 2015 21:16:04 +0200 Subject: [PATCH 2/2] Rustfmt --- Makefile | 2 ++ src/bin/rm/args.rs | 1 - src/bin/rm/main.rs | 16 +++++++++------- src/lib.rs | 3 ++- src/manifest.rs | 26 +++++++++++++++----------- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index ab3ef4781b..ec8f6d2325 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,10 @@ release: cargo build --release $(FEATURES) fmt: + rustfmt src/lib.rs --write-mode=overwrite && \ rustfmt src/bin/list/main.rs --write-mode=overwrite && \ rustfmt src/bin/add/main.rs --write-mode=overwrite && \ + rustfmt src/bin/rm/main.rs --write-mode=overwrite && \ rustfmt tests/*.rs --write-mode=overwrite .PHONY: build release fmt diff --git a/src/bin/rm/args.rs b/src/bin/rm/args.rs index d358eb0594..e57837ffa0 100644 --- a/src/bin/rm/args.rs +++ b/src/bin/rm/args.rs @@ -1,5 +1,4 @@ ///! Handle `cargo rm` arguments - #[derive(Debug, RustcDecodable)] /// Docopts input args. pub struct Args { diff --git a/src/bin/rm/main.rs b/src/bin/rm/main.rs index f86d10bb5a..de0286d198 100644 --- a/src/bin/rm/main.rs +++ b/src/bin/rm/main.rs @@ -41,19 +41,21 @@ fn handle_rm(args: &Args) -> Result<(), Box> { manifest.remove_from_table(args.get_section(), &args.arg_crate.as_ref()) .map_err(From::from) .and_then(|_| { - let mut file = try!(Manifest::find_file(&args.flag_manifest_path.as_ref().map(|s| &s[..]))); + let mut file = try!(Manifest::find_file(&args.flag_manifest_path + .as_ref() + .map(|s| &s[..]))); manifest.write_to_file(&mut file) }) - .or_else(|err| { - println!("Could not edit `Cargo.toml`.\n\nERROR: {}", err); - Err(err) - }) + .or_else(|err| { + println!("Could not edit `Cargo.toml`.\n\nERROR: {}", err); + Err(err) + }) } fn main() { let args = docopt::Docopt::new(USAGE) - .and_then(|d| d.decode::()) - .unwrap_or_else(|err| err.exit()); + .and_then(|d| d.decode::()) + .unwrap_or_else(|err| err.exit()); if args.flag_version { println!("cargo-rm version {}", env!("CARGO_PKG_VERSION")); diff --git a/src/lib.rs b/src/lib.rs index 9f1b45e67e..98c8b6bb51 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,8 @@ #![cfg_attr(feature = "dev", feature(plugin))] #![cfg_attr(feature = "dev", plugin(clippy))] -#[macro_use] extern crate quick_error; +#[macro_use] +extern crate quick_error; extern crate toml; mod manifest; diff --git a/src/manifest.rs b/src/manifest.rs index b8297dc0c1..066ba5b8d9 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -180,10 +180,7 @@ impl Manifest { /// assert!(manifest.remove_from_table("dependencies", &dep.0).is_err()); /// # } /// ``` - pub fn remove_from_table(&mut self, - table: &str, - name: &str) - -> Result<(), ManifestError> { + pub fn remove_from_table(&mut self, table: &str, name: &str) -> Result<(), ManifestError> { let ref mut manifest = self.data; let entry = manifest.entry(String::from(table)); @@ -192,9 +189,11 @@ impl Manifest { Entry::Occupied(entry) => { match *entry.into_mut() { toml::Value::Table(ref mut deps) => { - deps.remove(name).map(|_| ()).ok_or(ManifestError::NonExistentDependency(name.into(), table.into())) + deps.remove(name) + .map(|_| ()) + .ok_or(ManifestError::NonExistentDependency(name.into(), table.into())) } - _ => Err(ManifestError::NonExistentTable(table.into())) + _ => Err(ManifestError::NonExistentTable(table.into())), } } } @@ -237,8 +236,10 @@ mod tests { // Create a copy containing empty "dependencies" table because removing // the last entry in a table does not remove the section. let mut copy = Manifest { data: toml::Table::new() }; - copy.data.insert("dependencies".to_owned(), toml::Value::Table(BTreeMap::new())); - let dep = ("cargo-edit".to_owned(), toml::Value::String("0.1.0".to_owned())); + copy.data.insert("dependencies".to_owned(), + toml::Value::Table(BTreeMap::new())); + let dep = ("cargo-edit".to_owned(), + toml::Value::String("0.1.0".to_owned())); let _ = manifest.insert_into_table("dependencies", &dep); assert!(manifest.remove_from_table("dependencies", &dep.0).is_ok()); assert_eq!(manifest, copy); @@ -247,15 +248,18 @@ mod tests { #[test] fn remove_dependency_no_section() { let mut manifest = Manifest { data: toml::Table::new() }; - let dep = ("cargo-edit".to_owned(), toml::Value::String("0.1.0".to_owned())); + let dep = ("cargo-edit".to_owned(), + toml::Value::String("0.1.0".to_owned())); assert!(manifest.remove_from_table("dependencies", &dep.0).is_err()); } #[test] fn remove_dependency_non_existent() { let mut manifest = Manifest { data: toml::Table::new() }; - let dep = ("cargo-edit".to_owned(), toml::Value::String("0.1.0".to_owned())); - let other_dep = ("other-dep".to_owned(), toml::Value::String("0.1.0".to_owned())); + let dep = ("cargo-edit".to_owned(), + toml::Value::String("0.1.0".to_owned())); + let other_dep = ("other-dep".to_owned(), + toml::Value::String("0.1.0".to_owned())); let _ = manifest.insert_into_table("dependencies", &other_dep); assert!(manifest.remove_from_table("dependencies", &dep.0).is_err());