1pub mod app;
6pub mod cargo_package_resolver;
7pub mod cli;
8pub mod complexity;
9pub mod config;
10pub mod coverage;
11pub mod coverage_index;
12pub mod coverage_record;
13pub mod crap_formula;
14pub mod default_scorer;
15pub mod export;
16pub mod file_walker;
17pub mod function_report;
18pub mod impl_collector;
19pub mod item_visitor;
20pub mod llvm_cov_builder;
21pub mod llvm_cov_provider;
22pub mod normalize_path;
23pub mod output_format;
24pub mod package_context;
25pub mod project_metrics;
26pub mod project_report;
27pub mod source_function;
28pub mod source_function_discovery;
29pub mod source_root_collector;
30pub mod stdout_reporter;
31pub mod test_module_registry;
32pub mod traits;
33pub mod verdict;
34
35use std::ffi::OsString;
36use std::process::ExitCode;
37
38use anyhow::Result;
39use clap::Parser;
40
41use cli::Args;
42
43pub fn run() -> Result<ExitCode> {
44 let args = Args::parse_args();
45 app::run(args)
46}
47
48pub fn run_from_args<I, T>(args: I) -> Result<ExitCode>
49where
50 I: IntoIterator<Item = T>,
51 T: Into<OsString> + Clone,
52{
53 let args = <Args as Parser>::parse_from(args);
54 app::run(args)
55}