diff options
author | Marcel Müller <neikos@neikos.email> | 2023-05-03 14:45:44 +0200 |
---|---|---|
committer | Marcel Müller <neikos@neikos.email> | 2023-05-03 14:45:44 +0200 |
commit | b469b3bfcc777b7354058c72cbf9bacf7eae9c4a (patch) | |
tree | 644ff85f6fb1db8634284f8a830a22f964ddca31 | |
parent | b18f57bad5ffab7bed1dae6feebddfbbca4078c9 (diff) |
Filter out non-nested non-markdown files
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r-- | src/command/generate_changelog_command.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/command/generate_changelog_command.rs b/src/command/generate_changelog_command.rs index 1de3bdd..93c45f8 100644 --- a/src/command/generate_changelog_command.rs +++ b/src/command/generate_changelog_command.rs @@ -1,3 +1,4 @@ +use std::ffi::OsStr; use std::io::Write; use std::{collections::HashMap, io::BufReader, path::Path}; @@ -85,16 +86,21 @@ fn load_release_files( config: &Configuration, all: bool, ) -> impl Iterator<Item = Result<(Option<semver::Version>, Fragment), Error>> { - walkdir::WalkDir::new(workdir.join(config.fragment_dir())) + let root_path = workdir.join(config.fragment_dir()); + walkdir::WalkDir::new(root_path.clone()) .follow_links(false) .max_open(100) .same_file_system(true) .into_iter() - .filter_map(|rde| match rde { + .filter_map(move |rde| match rde { Err(e) => Some(Err(e)), Ok(de) => { if de.file_type().is_file() { - if de.path().ends_with("template.md") || de.path().ends_with(".gitkeep") { + // Since the file itself comes from the workdir, this cannot fail? + let clean_path = de.path().strip_prefix(root_path.as_path()).unwrap(); + if clean_path.components().count() <= 1 + || de.path().extension() != Some(OsStr::new("md")) + { None } else { log::debug!("Considering: {:?}", de); |