mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-14 00:47:16 +00:00
lintcheck: make TomlCrate also accept git-data from lintcheck_crates.toml
This commit is contained in:
parent
cb3021999c
commit
64982cc435
2 changed files with 38 additions and 28 deletions
|
@ -1,20 +1,20 @@
|
|||
[crates]
|
||||
# some of these are from cargotest
|
||||
cargo = ['0.49.0']
|
||||
iron = ['0.6.1']
|
||||
ripgrep = ['12.1.1']
|
||||
xsv = ['0.13.0']
|
||||
#tokei = ['12.0.4']
|
||||
rayon = ['1.5.0']
|
||||
serde = ['1.0.118']
|
||||
cargo = {name = "cargo", versions = ['0.49.0']}
|
||||
iron = {name = "iron", versions = ['0.6.1']}
|
||||
ripgrep = {name = "ripgrep", versions = ['12.1.1']}
|
||||
xsv = {name = "xsv", versions = ['0.13.0']}
|
||||
#tokei = { name = "tokei", versions = ['12.0.4']}
|
||||
rayon = {name = "rayon", versions = ['1.5.0']}
|
||||
serde = {name = "serde", versions = ['1.0.118']}
|
||||
# top 10 crates.io dls
|
||||
bitflags = ['1.2.1']
|
||||
libc = ['0.2.81']
|
||||
log = ['0.4.11']
|
||||
proc-macro2 = ['1.0.24']
|
||||
quote = ['1.0.7']
|
||||
rand = ['0.7.3']
|
||||
rand_core = ['0.6.0']
|
||||
regex = ['1.3.2']
|
||||
syn = ['1.0.54']
|
||||
unicode-xid = ['0.2.1']
|
||||
bitflags = {name = "bitflags", versions = ['1.2.1']}
|
||||
libc = {name = "libc", versions = ['0.2.81']}
|
||||
log = {name = "log", versions = ['0.4.11']}
|
||||
proc-macro2 = {name = "proc-macro2", versions = ['1.0.24']}
|
||||
quote = {name = "quote", versions = ['1.0.7']}
|
||||
rand = {name = "rand", versions = ['0.7.3']}
|
||||
rand_core = {name = "rand_core", versions = ['0.6.0']}
|
||||
regex = {name = "regex", versions = ['1.3.2']}
|
||||
syn = {name = "syn", versions = ['1.0.54']}
|
||||
unicode-xid = {name = "unicode-xid", versions = ['0.2.1']}
|
||||
|
|
|
@ -20,14 +20,17 @@ use serde_json::Value;
|
|||
// use this to store the crates when interacting with the crates.toml file
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
struct CrateList {
|
||||
crates: HashMap<String, Vec<String>>,
|
||||
crates: HashMap<String, TomlCrate>,
|
||||
}
|
||||
|
||||
// crate data we stored in the toml, can have multiple versions per crate
|
||||
// A single TomlCrate is laster mapped to several CrateSources in that case
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
struct TomlCrate {
|
||||
name: String,
|
||||
versions: Vec<String>,
|
||||
versions: Option<Vec<String>>,
|
||||
git_url: Option<String>,
|
||||
git_hash: Option<String>,
|
||||
}
|
||||
|
||||
// represents an archive we download from crates.io
|
||||
|
@ -114,7 +117,7 @@ impl Crate {
|
|||
|
||||
let shared_target_dir = clippy_project_root().join("target/lintcheck/shared_target_dir/");
|
||||
|
||||
let all_output = std::process::Command::new(cargo_clippy_path)
|
||||
let all_output = std::process::Command::new(&cargo_clippy_path)
|
||||
.env("CARGO_TARGET_DIR", shared_target_dir)
|
||||
// lint warnings will look like this:
|
||||
// src/cargo/ops/cargo_compile.rs:127:35: warning: usage of `FromIterator::from_iter`
|
||||
|
@ -128,7 +131,12 @@ impl Crate {
|
|||
])
|
||||
.current_dir(&self.path)
|
||||
.output()
|
||||
.unwrap();
|
||||
.unwrap_or_else(|error| {
|
||||
dbg!(error);
|
||||
dbg!(&cargo_clippy_path);
|
||||
dbg!(&self.path);
|
||||
panic!("something was not found?")
|
||||
});
|
||||
let stdout = String::from_utf8_lossy(&all_output.stdout);
|
||||
let output_lines = stdout.lines();
|
||||
//dbg!(&output_lines);
|
||||
|
@ -160,19 +168,21 @@ fn read_crates() -> Vec<CrateSource> {
|
|||
let tomlcrates: Vec<TomlCrate> = crate_list
|
||||
.crates
|
||||
.into_iter()
|
||||
.map(|(name, versions)| TomlCrate { name, versions })
|
||||
.map(|(_cratename, tomlcrate)| tomlcrate)
|
||||
.collect();
|
||||
|
||||
// flatten TomlCrates into CrateSources (one TomlCrates may represent several versions of a crate =>
|
||||
// multiple Cratesources)
|
||||
let mut crate_sources = Vec::new();
|
||||
tomlcrates.into_iter().for_each(|tk| {
|
||||
tk.versions.iter().for_each(|ver| {
|
||||
crate_sources.push(CrateSource {
|
||||
name: tk.name.clone(),
|
||||
version: ver.to_string(),
|
||||
});
|
||||
})
|
||||
if let Some(ref versions) = tk.versions {
|
||||
versions.iter().for_each(|ver| {
|
||||
crate_sources.push(CrateSource {
|
||||
name: tk.name.clone(),
|
||||
version: ver.to_string(),
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
crate_sources
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue