rcmd_core/
lib.rs

1///静态帮助类
2pub mod util;
3
4///打包
5pub mod pkg;
6
7///透传暴露的lib
8pub mod Ex {
9    pub use walkdir;
10    pub use chrono;
11}
12///日志模块
13pub 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            // .chain(fern::log_file("output.log")?)
29            .apply()?;
30        Ok(())
31    }
32}
33///命令行模块
34pub 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            //忽略.开头的文件
63            .map(|s|!s.starts_with("."))
64            .unwrap_or(false)
65    }
66}
67
68