diff --git a/.github/workflows/cache-zigs.yml b/.github/workflows/cache-zigs.yml index 946419c4..d9c2c003 100644 --- a/.github/workflows/cache-zigs.yml +++ b/.github/workflows/cache-zigs.yml @@ -11,7 +11,7 @@ jobs: outputs: matrix-json: ${{ steps.set-matrix.outputs.matrix }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: repository: rinse-repeat/zig-gh-helper path: zig-helper diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ca9563a..88ff5b00 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,27 +24,30 @@ jobs: # MacOS - runs-on: macos-latest steps: - - uses: actions/checkout@v3 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@v4 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: 1.76.0 - run: cargo test -- --skip args::args_tests::update_config_test_color_choice::case_4 --skip test_package -# TODO: Address clippy -# clippy: -# name: Check that clippy is happy -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v3 -# - uses: dtolnay/rust-toolchain@1.73.0 -# with: -# components: clippy -# - run: cargo clippy --target x86_64-unknown-linux-gnu --all-features + clippy: + name: Check that clippy is happy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: 1.76.0 + components: clippy + - run: cargo clippy --workspace --all-features --all-targets --no-deps -- -D warnings rustfmt: name: Check formatting runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@v4 + - uses: actions-rust-lang/setup-rust-toolchain@v1 with: + toolchain: 1.76.0 components: rustfmt - run: cargo fmt --all -- --check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b994218..126059aa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: outputs: matrix-json: ${{ steps.set-matrix.outputs.matrix }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: path: release-repo - id: set-matrix diff --git a/Cargo.lock b/Cargo.lock index 52d5c964..60185afa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -365,7 +365,7 @@ dependencies = [ "cargo-geiger-serde", "cargo-platform", "cargo-util", - "cargo_metadata 0.18.1", + "cargo_metadata", "colored", "console", "fs_extra", @@ -442,20 +442,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "cc" version = "1.0.83" @@ -2043,7 +2029,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a857d4b6450fbc2b85c03684b2beae51916a5a90e2fb5f9c2b8acc920ad29e49" dependencies = [ - "cargo_metadata 0.15.4", + "cargo_metadata", "cfg-expr", "petgraph", "semver", @@ -2252,6 +2238,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.17" @@ -3171,13 +3163,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", "libc", + "num-conv", "num_threads", "powerfmt", "serde", @@ -3193,10 +3186,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] diff --git a/cargo-geiger-serde/src/lib.rs b/cargo-geiger-serde/src/lib.rs index 4dd8ec01..2d904259 100644 --- a/cargo-geiger-serde/src/lib.rs +++ b/cargo-geiger-serde/src/lib.rs @@ -4,7 +4,6 @@ //! This crate provides definitions to serialize the unsafety report. #![forbid(unsafe_code)] -#![deny(warnings)] mod package_id; mod report; diff --git a/cargo-geiger/Cargo.toml b/cargo-geiger/Cargo.toml index 7c3b11fc..2311e098 100644 --- a/cargo-geiger/Cargo.toml +++ b/cargo-geiger/Cargo.toml @@ -17,7 +17,7 @@ maintenance = { status = "experimental" } anyhow = "1.0.70" cargo = "0.75.1" cargo-geiger-serde = { path = "../cargo-geiger-serde", version = "0.2.3" } -cargo_metadata = "0.18.1" +cargo_metadata = "0.15.4" cargo-platform = "0.1.2" colored = "2.0.0" console = "0.15.5" diff --git a/cargo-geiger/src/args.rs b/cargo-geiger/src/args.rs index 5709e816..9eb22d3a 100644 --- a/cargo-geiger/src/args.rs +++ b/cargo-geiger/src/args.rs @@ -241,19 +241,14 @@ pub struct ReadmeArgs { pub update_readme: bool, } -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug, Default, Eq, PartialEq)] pub enum Verbosity { + #[default] Verbose, Normal, Quiet, } -impl Default for Verbosity { - fn default() -> Self { - Verbose - } -} - fn parse_features(raw_features: Option) -> Vec { raw_features .as_ref() diff --git a/cargo-geiger/src/format.rs b/cargo-geiger/src/format.rs index c35f4861..1a8ab028 100644 --- a/cargo-geiger/src/format.rs +++ b/cargo-geiger/src/format.rs @@ -11,19 +11,14 @@ use std::fmt; use std::str::{self, FromStr}; use strum_macros::EnumIter; -#[derive(Clone, Copy, Debug, Eq, PartialEq)] +#[derive(Clone, Copy, Default, Debug, Eq, PartialEq)] pub enum Charset { + #[default] Ascii, GitHubMarkdown, Utf8, } -impl Default for Charset { - fn default() -> Self { - Charset::Ascii - } -} - #[derive(Debug, Eq, PartialEq)] pub enum Chunk { License, diff --git a/cargo-geiger/src/format/print_config.rs b/cargo-geiger/src/format/print_config.rs index ca9196c5..671e767e 100644 --- a/cargo-geiger/src/format/print_config.rs +++ b/cargo-geiger/src/format/print_config.rs @@ -15,21 +15,16 @@ pub enum Prefix { None, } -#[derive(Clone, Copy, Debug, EnumString, Eq, PartialEq)] +#[derive(Clone, Copy, Debug, Default, EnumString, Eq, PartialEq)] pub enum OutputFormat { Ascii, Json, GitHubMarkdown, Ratio, + #[default] Utf8, } -impl Default for OutputFormat { - fn default() -> Self { - OutputFormat::Utf8 - } -} - #[derive(Debug, Eq, PartialEq)] pub struct PrintConfig { /// Don't truncate dependencies that have already been displayed. diff --git a/cargo-geiger/src/lib.rs b/cargo-geiger/src/lib.rs index cc081460..d220ad9a 100644 --- a/cargo-geiger/src/lib.rs +++ b/cargo-geiger/src/lib.rs @@ -5,7 +5,6 @@ #![deny(clippy::cargo)] #![deny(clippy::doc_markdown)] #![forbid(unsafe_code)] -#![deny(warnings)] /// Argument parsing pub mod args; diff --git a/cargo-geiger/src/main.rs b/cargo-geiger/src/main.rs index ab8e8acc..f6443a41 100644 --- a/cargo-geiger/src/main.rs +++ b/cargo-geiger/src/main.rs @@ -4,7 +4,6 @@ #![deny(clippy::cargo)] #![deny(clippy::doc_markdown)] #![forbid(unsafe_code)] -#![deny(warnings)] extern crate cargo; extern crate colored; diff --git a/cargo-geiger/src/readme.rs b/cargo-geiger/src/readme.rs index 9eba386e..87305ddf 100644 --- a/cargo-geiger/src/readme.rs +++ b/cargo-geiger/src/readme.rs @@ -123,7 +123,7 @@ fn read_file_contents(path: &Path) -> Result, Error> { Ok(buf_reader .lines() - .filter_map(|l| l.ok()) + .map_while(Result::ok) .collect::>()) } diff --git a/cargo-geiger/src/scan.rs b/cargo-geiger/src/scan.rs index b9770d70..567eeaa1 100644 --- a/cargo-geiger/src/scan.rs +++ b/cargo-geiger/src/scan.rs @@ -184,11 +184,11 @@ fn list_files_used_but_not_scanned( rs_files_used .iter() - .cloned() .filter(|p| { !scanned_files.contains(p) - && !geiger_context.ignored_paths.contains(p) + && !geiger_context.ignored_paths.contains(*p) }) + .cloned() .collect() } @@ -357,7 +357,7 @@ mod scan_tests { &mut visited, ); - assert_eq!(visited, vec![dependency_index].iter().cloned().collect()); + assert_eq!(visited, [dependency_index].iter().cloned().collect()); assert_eq!( package_info.dependencies.len(), expected_package_info_dependency_length @@ -446,7 +446,7 @@ mod scan_tests { input_rs_path_to_metrics_vec.iter().cloned().collect(); let geiger_context = GeigerContext { - package_id_to_metrics: vec![( + package_id_to_metrics: [( package_id, PackageMetrics { rs_path_to_metrics }, )] diff --git a/cargo-geiger/src/scan/find.rs b/cargo-geiger/src/scan/find.rs index 2bf7b385..d7389041 100644 --- a/cargo-geiger/src/scan/find.rs +++ b/cargo-geiger/src/scan/find.rs @@ -2,7 +2,7 @@ use crate::format::print_config::PrintConfig; use crate::mapping::{CargoMetadataParameters, GetPackageRoot}; use crate::scan::rs_file::{ into_is_entry_point_and_path_buf, into_rs_code_file, into_target_kind, - is_file_with_ext, RsFile, RsFileMetricsWrapper, + is_file_with_ext, RsFile, }; use crate::scan::PackageMetrics; @@ -236,13 +236,11 @@ fn update_package_id_to_metrics_with_rs_file_metrics( path_buf: PathBuf, rs_file_metrics: RsFileMetrics, ) { - let package_metrics = package_id_to_metrics - .entry(package_id) - .or_insert_with(PackageMetrics::default); + let package_metrics = package_id_to_metrics.entry(package_id).or_default(); let wrapper = package_metrics .rs_path_to_metrics .entry(path_buf) - .or_insert_with(RsFileMetricsWrapper::default); + .or_default(); wrapper.metrics = rs_file_metrics; wrapper.is_crate_entry_point = is_entry_point; } diff --git a/cargo-geiger/src/scan/rs_file.rs b/cargo-geiger/src/scan/rs_file.rs index 4fc27fca..100870f1 100644 --- a/cargo-geiger/src/scan/rs_file.rs +++ b/cargo-geiger/src/scan/rs_file.rs @@ -218,7 +218,7 @@ fn add_dir_entries_to_path_buf_hash_set( path_buf_hash_set: &mut HashSet, workspace_root: PathBuf, ) -> Result<(), RsResolveError> { - for entry in WalkDir::new(&out_dir) { + for entry in WalkDir::new(out_dir) { let entry = entry.map_err(RsResolveError::Walkdir)?; if !is_file_with_ext(&entry, "d") { continue; @@ -423,7 +423,7 @@ mod rs_file_tests { let config = Config::default().unwrap(); let cwd = config.cwd(); - let walk_dir_rust_files = WalkDir::new(&cwd) + let walk_dir_rust_files = WalkDir::new(cwd) .into_iter() .filter_map(|e| e.ok()) .filter(|e| e.path().to_str().unwrap().ends_with(".rs")); @@ -432,7 +432,7 @@ mod rs_file_tests { assert!(is_file_with_ext(&entry, "rs")); } - let walk_dir_readme_files = WalkDir::new(&cwd) + let walk_dir_readme_files = WalkDir::new(cwd) .into_iter() .filter_map(|e| e.ok()) .filter(|e| e.path().to_str().unwrap().contains("README")); diff --git a/cargo-geiger/src/tree/traversal/dependency_node.rs b/cargo-geiger/src/tree/traversal/dependency_node.rs index 579499c4..c64c377c 100644 --- a/cargo-geiger/src/tree/traversal/dependency_node.rs +++ b/cargo-geiger/src/tree/traversal/dependency_node.rs @@ -55,8 +55,8 @@ pub fn walk_dependency_node( all_out_text_tree_lines } -fn construct_dependency_type_nodes_hashmap<'a>( - graph: &'a Graph, +fn construct_dependency_type_nodes_hashmap( + graph: &Graph, package: &PackageId, print_config: &PrintConfig, ) -> HashMap> { diff --git a/cargo-geiger/tests/context/mod.rs b/cargo-geiger/tests/context/mod.rs index fe54f02c..581e79fe 100644 --- a/cargo-geiger/tests/context/mod.rs +++ b/cargo-geiger/tests/context/mod.rs @@ -17,7 +17,7 @@ impl Context { content_only: true, ..Default::default() }; - fs_extra::dir::copy(&src_path, dir.path(), ©_options) + fs_extra::dir::copy(src_path, dir.path(), ©_options) .expect("Failed to copy tests"); let path = dir .path() diff --git a/geiger/src/lib.rs b/geiger/src/lib.rs index 98492bac..9fc0ccf9 100644 --- a/geiger/src/lib.rs +++ b/geiger/src/lib.rs @@ -5,7 +5,6 @@ //! from `cargo`. #![forbid(unsafe_code)] -#![deny(warnings)] pub mod find; pub use find::*; // preserve APIs