generate-copyright: gather files inside interesting folders

This commit is contained in:
Jonathan Pallant 2024-08-06 11:02:11 +01:00
parent 30ac7c9a81
commit 5277b67b69
No known key found for this signature in database

View File

@ -2,7 +2,7 @@
use std::collections::BTreeMap;
use std::ffi::OsStr;
use std::path::Path;
use std::path::{Path, PathBuf};
/// Describes how this module can fail
#[derive(Debug, thiserror::Error)]
@ -15,6 +15,8 @@ pub enum Error {
LaunchingVendor(std::io::Error),
#[error("Failed to complete cargo vendor")]
RunningVendor,
#[error("Bad path {0:?} whilst scraping files")]
Scraping(PathBuf),
}
/// Uniquely describes a package on crates.io
@ -150,7 +152,9 @@ fn load_important_files(
let entry = entry?;
let metadata = entry.metadata()?;
let path = entry.path();
if let Some(filename) = path.file_name() {
let Some(filename) = path.file_name() else {
return Err(Error::Scraping(path));
};
let lc_filename = filename.to_ascii_lowercase();
let lc_filename_str = lc_filename.to_string_lossy();
let mut keep = false;
@ -162,7 +166,20 @@ fn load_important_files(
}
if keep {
if metadata.is_dir() {
// scoop up whole directory
for inner_entry in std::fs::read_dir(entry.path())? {
let inner_entry = inner_entry?;
if inner_entry.metadata()?.is_file() {
let inner_filename = inner_entry.file_name();
let inner_filename_str = inner_filename.to_string_lossy();
let qualified_filename =
format!("{}/{}", lc_filename_str, inner_filename_str);
println!("Scraping {}", qualified_filename);
dep.notices.insert(
qualified_filename.to_string(),
std::fs::read_to_string(inner_entry.path())?,
);
}
}
} else if metadata.is_file() {
let filename = filename.to_string_lossy();
println!("Scraping {}", filename);
@ -170,6 +187,5 @@ fn load_important_files(
}
}
}
}
Ok(())
}