diff options
| author | Jason Newcomb <jsnewcomb@pm.me> | 2022-03-29 08:32:12 -0400 |
|---|---|---|
| committer | Jason Newcomb <jsnewcomb@pm.me> | 2022-04-01 23:18:47 -0400 |
| commit | 7025283f3ec649f0041c81a7e8269d38e0fc21ba (patch) | |
| tree | 6ec5076a608c99431a2b5fd1b465e9339f287c57 | |
| parent | b3f8415032a4b86f72aa7a99c7fe62a25c302927 (diff) | |
| download | rust-7025283f3ec649f0041c81a7e8269d38e0fc21ba.tar.gz rust-7025283f3ec649f0041c81a7e8269d38e0fc21ba.zip | |
Remove cargo_metadata dependency from clippy_dev
| -rw-r--r-- | clippy_dev/Cargo.toml | 3 | ||||
| -rw-r--r-- | clippy_dev/src/lib.rs | 1 | ||||
| -rw-r--r-- | clippy_dev/src/new_lint.rs | 24 |
3 files changed, 17 insertions, 11 deletions
diff --git a/clippy_dev/Cargo.toml b/clippy_dev/Cargo.toml index 80423ea624f..1f2d8adecee 100644 --- a/clippy_dev/Cargo.toml +++ b/clippy_dev/Cargo.toml @@ -4,15 +4,12 @@ version = "0.0.1" edition = "2021" [dependencies] -bytecount = "0.6" clap = "2.33" indoc = "1.0" itertools = "0.10.1" opener = "0.5" shell-escape = "0.1" walkdir = "2.3" -cargo_metadata = "0.14" - [features] deny-warnings = [] diff --git a/clippy_dev/src/lib.rs b/clippy_dev/src/lib.rs index f9e0f2ff69c..414b403827d 100644 --- a/clippy_dev/src/lib.rs +++ b/clippy_dev/src/lib.rs @@ -1,3 +1,4 @@ +#![feature(let_else)] #![feature(once_cell)] #![feature(rustc_private)] #![cfg_attr(feature = "deny-warnings", deny(warnings))] diff --git a/clippy_dev/src/new_lint.rs b/clippy_dev/src/new_lint.rs index 59658b42c79..7a3fd131761 100644 --- a/clippy_dev/src/new_lint.rs +++ b/clippy_dev/src/new_lint.rs @@ -133,15 +133,23 @@ fn to_camel_case(name: &str) -> String { } fn get_stabilisation_version() -> String { - let mut command = cargo_metadata::MetadataCommand::new(); - command.no_deps(); - if let Ok(metadata) = command.exec() { - if let Some(pkg) = metadata.packages.iter().find(|pkg| pkg.name == "clippy") { - return format!("{}.{}.0", pkg.version.minor, pkg.version.patch); - } + fn parse_manifest(contents: &str) -> Option<String> { + let version = contents + .lines() + .filter_map(|l| l.split_once('=')) + .find_map(|(k, v)| (k.trim() == "version").then(|| v.trim()))?; + let Some(("0", version)) = version.get(1..version.len() - 1)?.split_once('.') else { + return None; + }; + let (minor, patch) = version.split_once('.')?; + Some(format!( + "{}.{}.0", + minor.parse::<u32>().ok()?, + patch.parse::<u32>().ok()? + )) } - - String::from("<TODO set version(see doc/adding_lints.md)>") + let contents = fs::read_to_string("Cargo.toml").expect("Unable to read `Cargo.toml`"); + parse_manifest(&contents).expect("Unable to find package version in `Cargo.toml`") } fn get_test_file_contents(lint_name: &str, header_commands: Option<&str>) -> String { |
