summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <neikos@neikos.email>2023-05-03 14:45:44 +0200
committerMarcel Müller <neikos@neikos.email>2023-05-03 14:45:44 +0200
commitb469b3bfcc777b7354058c72cbf9bacf7eae9c4a (patch)
tree644ff85f6fb1db8634284f8a830a22f964ddca31
parentb18f57bad5ffab7bed1dae6feebddfbbca4078c9 (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.rs12
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);