intigrate with .gitignore

This commit is contained in:
Evan Almloff 2023-01-13 16:25:03 -06:00
parent cc983dc091
commit d642e53a2b
2 changed files with 13 additions and 2 deletions

View file

@ -16,4 +16,5 @@ chrono = "0.4.23"
serde_json = "1.0.91"
serde = { version = "1", features = ["derive"] }
execute = "0.2.11"
once_cell = "1.17.0"
once_cell = "1.17.0"
gitignore = "1.0.7"

View file

@ -157,6 +157,10 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
// watch for changes
std::thread::spawn(move || {
// try to find the gitingore file
let gitignore_file_path = crate_dir.join(".gitignore");
let gitignore_file = gitignore::File::new(&gitignore_file_path.as_path());
let mut last_update_time = chrono::Local::now().timestamp();
let (tx, rx) = std::sync::mpsc::channel();
@ -210,7 +214,13 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
// skip non rust files
matches!(path.extension().and_then(|p| p.to_str()), Some("rs" | "toml" | "css" | "html" | "js")) &&
// skip excluded paths
!excluded_paths.iter().any(|p| path.starts_with(p))
!excluded_paths.iter().any(|p| path.starts_with(p)) && match &gitignore_file{
Ok(file) => match file.is_excluded(path){
Ok(excluded) => !excluded,
Err(_) => true,
},
Err(_) => true,
}
})
.collect::<Vec<_>>();