eh: replaced the manual directory traversal with walkdir
Some checks failed
Rust / build (push) Has been cancelled

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I537cc9b6ab7110c47f9884f1793b07596a6a6964
This commit is contained in:
raf 2025-11-13 01:05:56 +03:00
commit 185403436b
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
5 changed files with 50 additions and 19 deletions

29
Cargo.lock generated
View file

@ -79,6 +79,7 @@ dependencies = [
"thiserror",
"tracing",
"tracing-subscriber",
"walkdir",
"yansi",
]
@ -174,6 +175,15 @@ version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
[[package]]
name = "sharded-slab"
version = "0.1.7"
@ -298,6 +308,25 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]]
name = "walkdir"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
dependencies = [
"same-file",
"winapi-util",
]
[[package]]
name = "winapi-util"
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys",
]
[[package]]
name = "windows-link"
version = "0.2.1"

View file

@ -18,6 +18,7 @@ regex = "1.12.2"
thiserror = "2.0.17"
tracing = "0.1.41"
tracing-subscriber = "0.3.20"
walkdir = "2.5.0"
yansi = "1.0.1"
[profile.release]

View file

@ -7,8 +7,8 @@ authors.workspace = true
rust-version.workspace = true
[lib]
crate-type = [ "lib" ]
name = "eh"
crate-type = ["lib"]
[dependencies]
clap.workspace = true
@ -16,4 +16,5 @@ regex.workspace = true
thiserror.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
walkdir.workspace = true
yansi.workspace = true

View file

@ -5,6 +5,7 @@ use std::fs;
use std::io::Write;
use std::path::{Path, PathBuf};
use tracing::{info, warn};
use walkdir::WalkDir;
use yansi::Paint;
pub trait HashExtractor {
@ -54,21 +55,20 @@ impl NixFileFixer for DefaultNixFileFixer {
}
fn find_nix_files(&self) -> Result<Vec<PathBuf>> {
let mut files = Vec::new();
let mut stack = vec![PathBuf::from(".")];
while let Some(dir) = stack.pop() {
let entries = fs::read_dir(&dir)?;
for entry in entries.flatten() {
let path = entry.path();
if path.is_dir() {
stack.push(path);
} else if let Some(ext) = path.extension()
&& ext.eq_ignore_ascii_case("nix")
{
files.push(path);
}
}
}
let files: Vec<PathBuf> = WalkDir::new(".")
.into_iter()
.filter_map(|entry| entry.ok())
.filter(|entry| {
entry.file_type().is_file()
&& entry
.path()
.extension()
.map(|ext| ext.eq_ignore_ascii_case("nix"))
.unwrap_or(false)
})
.map(|entry| entry.path().to_path_buf())
.collect();
if files.is_empty() {
Err(EhError::NoNixFilesFound)
} else {