From 33d0612292e4f2408be523be545779a362b06e2b Mon Sep 17 00:00:00 2001 From: realaravinth Date: Mon, 5 Jul 2021 15:24:56 +0530 Subject: [PATCH] no_hash copies files --- dist/858fd6c482cc75111d54.module.wasm | Bin 0 -> 69618 bytes src/processor.rs | 92 ++++++++++++++++++++------ 2 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 dist/858fd6c482cc75111d54.module.wasm diff --git a/dist/858fd6c482cc75111d54.module.wasm b/dist/858fd6c482cc75111d54.module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..183cc571ad6c85de7d763b56b78087934b78b658 GIT binary patch literal 69618 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 literal 0 HcmV?d00001 diff --git a/src/processor.rs b/src/processor.rs index 15d5e99..a7c9ea4 100644 --- a/src/processor.rs +++ b/src/processor.rs @@ -55,7 +55,8 @@ pub struct Buster<'a> { #[builder(setter(into))] source: String, /// mime_types for hashing - mime_types: Vec, + #[builder(setter(into, strip_option), default)] + mime_types: Option>, /// directory for writing results #[builder(setter(into))] result: String, @@ -127,29 +128,50 @@ impl<'a> Buster<'a> { let entry = entry?; let path = entry.path(); - if !path.is_dir() && !self.no_hash.contains(&path.to_str().unwrap()) { + if !path.is_dir() { let path = Path::new(&path); - for mime_type in self.mime_types.iter() { - let file_mime = mime_guess::from_path(path) - .first() - .unwrap_or_else(|| panic!("couldn't resolve MIME for file: {:?}", &path)); - if &file_mime == mime_type { - let contents = Self::read_to_string(&path).unwrap(); - let hash = Self::hasher(&contents); - let new_name = format!( + let mut process_worker = |path: &Path| { + let contents = Self::read_to_string(&path).unwrap(); + let hash = Self::hasher(&contents); + let new_name = if self.no_hash.iter().any(|no_hash| { + let no_hash = Path::new(&self.source).join(&no_hash); + no_hash == path + }) { + format!( + "{}.{}", + path.file_stem().unwrap().to_str().unwrap(), + path.extension().unwrap().to_str().unwrap() + ) + } else { + format!( "{}.{}.{}", path.file_stem().unwrap().to_str().unwrap(), hash, path.extension().unwrap().to_str().unwrap() - ); - self.copy(path, &new_name); - let (source, destination) = self.gen_map(path, &&new_name); - let _ = file_map.add( - source.to_str().unwrap().into(), - destination.to_str().unwrap().into(), - ); + ) + }; + self.copy(path, &new_name); + let (source, destination) = self.gen_map(path, &&new_name); + let _ = file_map.add( + source.to_str().unwrap().into(), + destination.to_str().unwrap().into(), + ); + }; + + match self.mime_types.as_ref() { + Some(mime_types) => { + for mime_type in mime_types.iter() { + let file_mime = + mime_guess::from_path(path).first().unwrap_or_else(|| { + panic!("couldn't resolve MIME for file: {:?}", &path) + }); + if &file_mime == mime_type { + process_worker(&path); + } + } } + None => process_worker(&path), } } } @@ -340,7 +362,7 @@ pub mod tests { let config = BusterBuilder::default() .source("./dist") - .result("/tmp/prod2i") + .result("/tmp/prod2i2") .mime_types(types) .copy(true) .follow_links(true) @@ -354,11 +376,16 @@ pub mod tests { if let Some(prefix) = &config.prefix { no_hash.iter().for_each(|file| { - files.map.iter().any(|(k, v)| { + assert!(files.map.iter().any(|(k, v)| { + let source = Path::new(k); let dest = Path::new(&v[prefix.len()..]); let no_hash = Path::new(file); - k == file && dest.exists() && no_hash.file_name() == dest.file_name() - }); + let stat = source == &Path::new(&config.source).join(file) + && dest.exists() + && no_hash.file_name() == dest.file_name(); + println!("[{}] file: {}", stat, file); + stat + })); }); for (k, v) in files.map.drain() { @@ -394,6 +421,29 @@ pub mod tests { .is_err()) } + // #[test] + // fn no_specific_mime() { + // let no_hash = vec!["858fd6c482cc75111d54.module.wasm"]; + // let config = BusterBuilder::default() + // .source("./dist") + // .result("/tmp/prod2ii") + // .copy(true) + // .follow_links(true) + // .no_hash(no_hash.clone()) + // .prefix("/test") + // .build() + // .unwrap(); + // config.process().unwrap(); + // let files = Files::load(); + // files.map.iter().any(|(k, v)| { + // let dest = Path::new(&v[prefix.len()..]); + // let no_hash = Path::new(file); + // k == file && dest.exists() && no_hash.file_name() == dest.file_name() + // }); + // + // cleanup(&config); + // } + pub fn runner() { prefix_works(); hasher_works();