Skip to content

Commit c8cf756

Browse files
committed
fix exclude OPTION to work wiht absolute paths #178
1 parent f7023d7 commit c8cf756

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

Diff for: Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ clap = "2.33.0"
1818
strum = "0.18.0"
1919
strum_macros = "0.18.0"
2020
image = "0.22.3"
21+
regex = "1"
2122

2223
[target.'cfg(windows)'.dependencies]
2324
ansi_term = "0.12"

Diff for: src/language.rs

+20-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use regex::Regex;
12
use std::collections::HashMap;
23

34
use colored::Color;
@@ -360,9 +361,9 @@ impl Language {
360361

361362
pub fn get_language_stats(
362363
dir: &str,
363-
exclude: Vec<&str>,
364+
ignored_directories: Vec<&str>,
364365
) -> Result<(Vec<(Language, f64)>, usize)> {
365-
let tokei_langs = project_languages(&dir, exclude);
366+
let tokei_langs = project_languages(&dir, ignored_directories);
366367
let languages_stat =
367368
Language::get_languages_stat(&tokei_langs).ok_or(Error::SourceCodeNotFound)?;
368369
let mut stat_vec: Vec<(_, _)> = languages_stat.into_iter().collect();
@@ -384,7 +385,7 @@ fn get_total_loc(languages: &tokei::Languages) -> usize {
384385
.fold(0, |sum, val| sum + val.code)
385386
}
386387

387-
fn project_languages(dir: &str, exclude: Vec<&str>) -> tokei::Languages {
388+
fn project_languages(dir: &str, ignored_directories: Vec<&str>) -> tokei::Languages {
388389
use tokei::Config;
389390

390391
let mut languages = tokei::Languages::new();
@@ -394,7 +395,22 @@ fn project_languages(dir: &str, exclude: Vec<&str>) -> tokei::Languages {
394395
..Config::default()
395396
};
396397

397-
languages.get_statistics(&[&dir], &exclude, &tokei_config);
398+
if !ignored_directories.is_empty() {
399+
let re = Regex::new(r"((.*)+/)+(.*)").unwrap();
400+
let mut v = Vec::with_capacity(ignored_directories.len());
401+
for ignored in ignored_directories {
402+
if re.is_match(ignored) {
403+
v.push(format!("{}{}", "**/", ignored));
404+
} else {
405+
v.push(String::from(ignored));
406+
}
407+
}
408+
let ignored_directories_for_ab: Vec<&str> = v.iter().map(|x| &**x).collect();
409+
languages.get_statistics(&[&dir], &ignored_directories_for_ab, &tokei_config);
410+
} else {
411+
languages.get_statistics(&[&dir], &ignored_directories, &tokei_config);
412+
}
413+
398414
languages
399415
}
400416

Diff for: src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ extern crate bytecount;
33
extern crate askalono;
44
extern crate colored;
55
extern crate git2;
6+
extern crate regex;
67
extern crate tokei;
78
#[macro_use]
89
extern crate clap;

0 commit comments

Comments
 (0)