diff --git a/src/main.rs b/src/main.rs index 4cbefa1..2ba1dff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,11 +39,14 @@ struct Args { fn main() { let args = Args::parse(); - let root_dir: PathBuf = std::env::current_dir().unwrap(); + let mut paths: Vec = vec![]; let mut excludes: Vec = vec![]; + let mut entries: Vec = vec![]; + let mut stats = Stats::new(); + for p in args.paths { let mut path = root_dir.clone(); @@ -53,7 +56,9 @@ fn main() { path.push(p); } - paths.push(path); + if path.exists() { + paths.push(path); + } } for exclude in args.exclude { @@ -63,27 +68,28 @@ fn main() { excludes.push(path); } - let mut entries: Vec = vec![]; - let mut stats = Stats::new(); - - for p in &paths { - scan_dir(p.as_path(), &mut entries, &excludes, &mut stats).unwrap(); - } - let mut todos_path = root_dir.clone(); todos_path.push(&args.todos); - if todos_path.exists() { - scan_todo_file(&todos_path, &mut entries).unwrap(); - } - let mut readme_path = root_dir.clone(); readme_path.push(&args.readme); + if todos_path.exists() { + excludes.push(todos_path.clone()); + + scan_todo_file(&todos_path, &mut entries).unwrap(); + } + if readme_path.exists() { + excludes.push(readme_path.clone()); + scan_readme_file(&readme_path, &mut entries).unwrap(); } + for p in &paths { + scan_dir(p.as_path(), &mut entries, &excludes, &mut stats).unwrap(); + } + render_entries(entries); if args.verbose { @@ -91,5 +97,7 @@ fn main() { stats.print(); eprintln!("Paths: {:?}", &paths); eprintln!("Excludes: {:?}", &excludes); + eprintln!("todo.md: {:?}", &todos_path); + eprintln!("readme.md: {:?}", &readme_path); } } diff --git a/src/scan.rs b/src/scan.rs index d7b20a4..35ebfec 100644 --- a/src/scan.rs +++ b/src/scan.rs @@ -45,6 +45,7 @@ fn clean_line<'a>(line: &'a str, delimiter_word: &str) -> &'a str { .trim() .trim_end_matches("*/") .trim_end_matches("-->") + .trim_end_matches("--}}") .trim(); } @@ -128,13 +129,13 @@ pub fn scan_dir(path: &Path, entries: &mut Vec, excludes: &Vec, continue; } - if path.is_dir() { - for exclude in excludes { - if path == *exclude { - continue 'entry; - } + for exclude in excludes { + if path == *exclude { + continue 'entry; } + } + if path.is_dir() { scan_dir(path.as_path(), entries, excludes, stats)? } else { stats.visited_files += 1;