diff options
| author | Philipp Hansch <dev@phansch.net> | 2020-01-30 08:33:48 +0100 |
|---|---|---|
| committer | Philipp Hansch <dev@phansch.net> | 2020-01-30 21:34:31 +0100 |
| commit | 4d1a11d354c77213a98f76b07933ebb26822d017 (patch) | |
| tree | a3e69ae22fe2f4eb7b0c7aab43343891056e3eea /clippy_dev | |
| parent | f69835bab7cfa56dc4565d8fe32765a95d93182b (diff) | |
| download | rust-4d1a11d354c77213a98f76b07933ebb26822d017.tar.gz rust-4d1a11d354c77213a98f76b07933ebb26822d017.zip | |
Deprecate util/dev in favor of cargo alias
If you've been using `./util/dev` before, this now becomes `cargo dev`. The key part of this change is found in `.cargo/config`. This means one less shell script and a bit more cross-platform support for contributors.
Diffstat (limited to 'clippy_dev')
| -rw-r--r-- | clippy_dev/src/fmt.rs | 2 | ||||
| -rw-r--r-- | clippy_dev/src/lib.rs | 17 | ||||
| -rw-r--r-- | clippy_dev/src/main.rs | 23 |
3 files changed, 26 insertions, 16 deletions
diff --git a/clippy_dev/src/fmt.rs b/clippy_dev/src/fmt.rs index 69cd046a855..0d950d5b9fe 100644 --- a/clippy_dev/src/fmt.rs +++ b/clippy_dev/src/fmt.rs @@ -88,7 +88,7 @@ pub fn run(check: bool, verbose: bool) { Ok(false) => { eprintln!(); eprintln!("Formatting check failed."); - eprintln!("Run `./util/dev fmt` to update formatting."); + eprintln!("Run `cargo dev fmt` to update formatting."); 1 }, Err(err) => { diff --git a/clippy_dev/src/lib.rs b/clippy_dev/src/lib.rs index 3aae3e53317..1aa34ce651f 100644 --- a/clippy_dev/src/lib.rs +++ b/clippy_dev/src/lib.rs @@ -7,6 +7,7 @@ use std::collections::HashMap; use std::ffi::OsStr; use std::fs; use std::io::prelude::*; +use std::path::{Path, PathBuf}; use walkdir::WalkDir; lazy_static! { @@ -205,7 +206,8 @@ fn parse_contents(content: &str, filename: &str) -> impl Iterator<Item = Lint> { fn lint_files() -> impl Iterator<Item = walkdir::DirEntry> { // We use `WalkDir` instead of `fs::read_dir` here in order to recurse into subdirectories. // Otherwise we would not collect all the lints, for example in `clippy_lints/src/methods/`. - WalkDir::new("../clippy_lints/src") + let path = clippy_project_dir().join("clippy_lints/src"); + WalkDir::new(path) .into_iter() .filter_map(std::result::Result::ok) .filter(|f| f.path().extension() == Some(OsStr::new("rs"))) @@ -225,7 +227,7 @@ pub struct FileChange { /// See `replace_region_in_text` for documentation of the other options. #[allow(clippy::expect_fun_call)] pub fn replace_region_in_file<F>( - path: &str, + path: &Path, start: &str, end: &str, replace_start: bool, @@ -235,14 +237,15 @@ pub fn replace_region_in_file<F>( where F: Fn() -> Vec<String>, { - let mut f = fs::File::open(path).expect(&format!("File not found: {}", path)); + let path = clippy_project_dir().join(path); + let mut f = fs::File::open(&path).expect(&format!("File not found: {}", path.to_string_lossy())); let mut contents = String::new(); f.read_to_string(&mut contents) .expect("Something went wrong reading the file"); let file_change = replace_region_in_text(&contents, start, end, replace_start, replacements); if write_back { - let mut f = fs::File::create(path).expect(&format!("File not found: {}", path)); + let mut f = fs::File::create(&path).expect(&format!("File not found: {}", path.to_string_lossy())); f.write_all(file_change.new_lines.as_bytes()) .expect("Unable to write file"); // Ensure we write the changes with a trailing newline so that @@ -318,6 +321,12 @@ where } } +/// Returns the path to the Clippy project directory +fn clippy_project_dir() -> PathBuf { + let clippy_dev_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); + clippy_dev_dir.parent().unwrap().to_path_buf() +} + #[test] fn test_parse_contents() { let result: Vec<Lint> = parse_contents( diff --git a/clippy_dev/src/main.rs b/clippy_dev/src/main.rs index 58b4f87e872..7369db1f078 100644 --- a/clippy_dev/src/main.rs +++ b/clippy_dev/src/main.rs @@ -2,6 +2,7 @@ use clap::{App, Arg, SubCommand}; use clippy_dev::*; +use std::path::Path; mod fmt; mod new_lint; @@ -49,12 +50,12 @@ fn main() { .arg( Arg::with_name("check") .long("check") - .help("Checks that util/dev update_lints has been run. Used on CI."), + .help("Checks that `cargo dev update_lints` has been run. Used on CI."), ), ) .subcommand( SubCommand::with_name("new_lint") - .about("Create new lint and run util/dev update_lints") + .about("Create new lint and run `cargo dev update_lints`") .arg( Arg::with_name("pass") .short("p") @@ -170,7 +171,7 @@ fn update_lints(update_mode: &UpdateMode) { sorted_usable_lints.sort_by_key(|lint| lint.name.clone()); let mut file_change = replace_region_in_file( - "../src/lintlist/mod.rs", + Path::new("src/lintlist/mod.rs"), "begin lint list", "end lint list", false, @@ -189,7 +190,7 @@ fn update_lints(update_mode: &UpdateMode) { .changed; file_change |= replace_region_in_file( - "../README.md", + Path::new("README.md"), r#"\[There are \d+ lints included in this crate!\]\(https://rust-lang.github.io/rust-clippy/master/index.html\)"#, "", true, @@ -202,7 +203,7 @@ fn update_lints(update_mode: &UpdateMode) { ).changed; file_change |= replace_region_in_file( - "../CHANGELOG.md", + Path::new("CHANGELOG.md"), "<!-- begin autogenerated links to lint list -->", "<!-- end autogenerated links to lint list -->", false, @@ -212,7 +213,7 @@ fn update_lints(update_mode: &UpdateMode) { .changed; file_change |= replace_region_in_file( - "../clippy_lints/src/lib.rs", + Path::new("clippy_lints/src/lib.rs"), "begin deprecated lints", "end deprecated lints", false, @@ -222,7 +223,7 @@ fn update_lints(update_mode: &UpdateMode) { .changed; file_change |= replace_region_in_file( - "../clippy_lints/src/lib.rs", + Path::new("clippy_lints/src/lib.rs"), "begin register lints", "end register lints", false, @@ -232,7 +233,7 @@ fn update_lints(update_mode: &UpdateMode) { .changed; file_change |= replace_region_in_file( - "../clippy_lints/src/lib.rs", + Path::new("clippy_lints/src/lib.rs"), "begin lints modules", "end lints modules", false, @@ -243,7 +244,7 @@ fn update_lints(update_mode: &UpdateMode) { // Generate lists of lints in the clippy::all lint group file_change |= replace_region_in_file( - "../clippy_lints/src/lib.rs", + Path::new("clippy_lints/src/lib.rs"), r#"store.register_group\(true, "clippy::all""#, r#"\]\);"#, false, @@ -266,7 +267,7 @@ fn update_lints(update_mode: &UpdateMode) { // Generate the list of lints for all other lint groups for (lint_group, lints) in Lint::by_lint_group(&usable_lints) { file_change |= replace_region_in_file( - "../clippy_lints/src/lib.rs", + Path::new("clippy_lints/src/lib.rs"), &format!("store.register_group\\(true, \"clippy::{}\"", lint_group), r#"\]\);"#, false, @@ -279,7 +280,7 @@ fn update_lints(update_mode: &UpdateMode) { if update_mode == &UpdateMode::Check && file_change { println!( "Not all lints defined properly. \ - Please run `util/dev update_lints` to make sure all lints are defined properly." + Please run `cargo dev update_lints` to make sure all lints are defined properly." ); std::process::exit(1); } |
