1pub mod util;
3
4pub mod pkg;
6
7pub mod Ex {
9 pub use walkdir;
10 pub use chrono;
11}
12pub mod Log {
14 pub use log::{*};
15 pub fn init_logger() -> Result<(), fern::InitError> {
16 fern::Dispatch::new()
17 .format(|out, message, record| {
18 out.finish(format_args!(
19 "{}[{}][{}] {}",
20 chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"),
21 record.target(),
22 record.level(),
23 message
24 ))
25 })
26 .level(log::LevelFilter::Debug)
27 .chain(std::io::stdout())
28 .apply()?;
30 Ok(())
31 }
32}
33pub use clap;
35pub use clap::{ArgMatches};
36
37pub mod queue;
38
39mod tests {
40 use crate::util::filesys::zip_dir;
41 use std::path::Path;
42 use walkdir::{WalkDir, DirEntry};
43
44
45 #[test]
46 fn it_works() {
47 use walkdir;
48 let src_dir = "/Users/mac/data0/public_work/ucmd/proj/rcmd-core/test/ziptest";
49 let pf = Path::new(src_dir);
50 let zipfile = std::fs::File::create("test/test.zip").unwrap();
51 let mut ws = WalkDir::new(pf);
52 zip_dir(
53 &mut ws.into_iter()
54 .filter_entry(|e|ignore_entry(e))
55 .filter_map(|v|v.ok()), pf.to_str().unwrap(), zipfile);
56 }
57
58 fn ignore_entry(entry: &DirEntry) -> bool {
59 entry
60 .file_name()
61 .to_str()
62 .map(|s|!s.starts_with("."))
64 .unwrap_or(false)
65 }
66}
67
68