1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
mod args;
use crate::args::Args;
use clap::Parser;
use depckeck_rs_core::checker::Checker;
use depckeck_rs_core::config::Config;
use proc_exit::WithCodeResultExt;
pub fn run() {
human_panic::setup_panic!();
let result = try_run();
proc_exit::exit(result);
}
fn try_run() -> proc_exit::ExitResult {
let args = match Args::try_parse() {
Ok(args) => args,
Err(e) if e.use_stderr() => {
let _ = e.print();
return proc_exit::Code::USAGE_ERR.ok();
}
Err(e) => {
let _ = e.print();
return proc_exit::Code::SUCCESS.ok();
}
};
let Args {
directory,
ignore_bin_package,
skip_missing,
ignore_path,
ignore_patterns,
ignore_matches,
verbose,
} = args;
env_logger::Builder::new()
.filter_level(verbose.log_level_filter())
.init();
let mut config = Config::new(directory)
.with_ignore_bin_package(ignore_bin_package)
.with_skip_missing(skip_missing)
.with_ignore_path(ignore_path);
if let Some(ignore_patterns) = ignore_patterns {
config = config.with_ignore_patterns(ignore_patterns);
}
if let Some(ignore_matches) = ignore_matches {
config = config.with_ignore_matches(ignore_matches);
}
let result = Checker::new(config)
.check_package()
.with_code(proc_exit::Code::USAGE_ERR)?;
println!("{:#?}", result);
Ok(())
}