refactor(main): remove walkdir, use recursive std::fs
Add walk_dir/walk_dir_inner helpers (~20 lines) to replace walkdir crate. Single call site in copy_static_assets didn't justify the dependency.
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -1625,7 +1625,6 @@ dependencies = [
|
|||||||
"tree-sitter-toml-ng",
|
"tree-sitter-toml-ng",
|
||||||
"tree-sitter-typescript",
|
"tree-sitter-typescript",
|
||||||
"tree-sitter-yaml",
|
"tree-sitter-yaml",
|
||||||
"walkdir",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ version = "0.1.0"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
gray_matter = "0.2"
|
gray_matter = "0.2"
|
||||||
pulldown-cmark = "0.12"
|
pulldown-cmark = "0.12"
|
||||||
walkdir = "2"
|
|
||||||
|
|
||||||
# Syntax highlighting
|
# Syntax highlighting
|
||||||
ropey = "1.6"
|
ropey = "1.6"
|
||||||
|
|||||||
38
src/main.rs
38
src/main.rs
@@ -350,12 +350,7 @@ fn copy_static_assets(static_dir: &Path, output_dir: &Path) -> Result<()> {
|
|||||||
source: e,
|
source: e,
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
for entry in walkdir::WalkDir::new(static_dir)
|
for src in walk_dir(static_dir)? {
|
||||||
.into_iter()
|
|
||||||
.filter_map(|e| e.ok())
|
|
||||||
.filter(|e| e.file_type().is_file())
|
|
||||||
{
|
|
||||||
let src = entry.path();
|
|
||||||
let relative = src.strip_prefix(static_dir).unwrap();
|
let relative = src.strip_prefix(static_dir).unwrap();
|
||||||
let dest = output_dir.join(relative);
|
let dest = output_dir.join(relative);
|
||||||
|
|
||||||
@@ -368,8 +363,8 @@ fn copy_static_assets(static_dir: &Path, output_dir: &Path) -> Result<()> {
|
|||||||
|
|
||||||
// Bundle CSS files (resolves @imports), copy others directly
|
// Bundle CSS files (resolves @imports), copy others directly
|
||||||
if src.extension().is_some_and(|ext| ext == "css") {
|
if src.extension().is_some_and(|ext| ext == "css") {
|
||||||
let original_size = fs::metadata(src).map(|m| m.len()).unwrap_or(0);
|
let original_size = fs::metadata(&src).map(|m| m.len()).unwrap_or(0);
|
||||||
let bundled = bundle_css(src).map_err(Error::CssBundle)?;
|
let bundled = bundle_css(&src).map_err(Error::CssBundle)?;
|
||||||
fs::write(&dest, &bundled).map_err(|e| Error::WriteFile {
|
fs::write(&dest, &bundled).map_err(|e| Error::WriteFile {
|
||||||
path: dest.clone(),
|
path: dest.clone(),
|
||||||
source: e,
|
source: e,
|
||||||
@@ -382,7 +377,7 @@ fn copy_static_assets(static_dir: &Path, output_dir: &Path) -> Result<()> {
|
|||||||
bundled.len()
|
bundled.len()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
fs::copy(src, &dest).map_err(|e| Error::WriteFile {
|
fs::copy(&src, &dest).map_err(|e| Error::WriteFile {
|
||||||
path: dest.clone(),
|
path: dest.clone(),
|
||||||
source: e,
|
source: e,
|
||||||
})?;
|
})?;
|
||||||
@@ -392,3 +387,28 @@ fn copy_static_assets(static_dir: &Path, output_dir: &Path) -> Result<()> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Recursively walk a directory, returning all file paths.
|
||||||
|
fn walk_dir(dir: &Path) -> Result<Vec<PathBuf>> {
|
||||||
|
let mut files = Vec::new();
|
||||||
|
walk_dir_inner(dir, &mut files)?;
|
||||||
|
Ok(files)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn walk_dir_inner(dir: &Path, files: &mut Vec<PathBuf>) -> Result<()> {
|
||||||
|
let entries = fs::read_dir(dir).map_err(|e| Error::ReadFile {
|
||||||
|
path: dir.to_path_buf(),
|
||||||
|
source: e,
|
||||||
|
})?;
|
||||||
|
|
||||||
|
for entry in entries.filter_map(|e| e.ok()) {
|
||||||
|
let path = entry.path();
|
||||||
|
if path.is_dir() {
|
||||||
|
walk_dir_inner(&path, files)?;
|
||||||
|
} else if path.is_file() {
|
||||||
|
files.push(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user