#![cfg_attr(allow_unknown_lints, allow(unknown_lints))]
#![cfg_attr(allow_unknown_lints, allow(renamed_and_removed_lints))]
#![deny(
future_incompatible,
nonstandard_style,
rust_2018_compatibility,
rust_2018_idioms,
unused,
warnings
)]
#![deny(
absolute_paths_not_starting_with_crate,
deprecated_in_future,
elided_lifetimes_in_paths,
explicit_outlives_requirements,
keyword_idents,
macro_use_extern_crate,
meta_variable_misuse,
missing_abi,
missing_copy_implementations,
missing_debug_implementations,
missing_docs,
non_ascii_idents,
noop_method_call,
pointer_structural_match,
rust_2021_incompatible_closure_captures,
rust_2021_incompatible_or_patterns,
semicolon_in_expressions_from_macros,
single_use_lifetimes,
trivial_casts,
trivial_numeric_casts,
unreachable_pub,
unsafe_code,
unsafe_op_in_unsafe_fn,
unstable_features,
unused_crate_dependencies,
unused_extern_crates,
unused_import_braces,
unused_lifetimes,
unused_qualifications,
unused_results,
variant_size_differences
)]
#![deny(clippy::all, clippy::cargo, clippy::nursery, clippy::pedantic, clippy::restriction)]
#![allow(
clippy::blanket_clippy_restriction_lints,
clippy::default_numeric_fallback,
clippy::else_if_without_else,
clippy::expect_used,
clippy::implicit_return,
clippy::integer_arithmetic,
clippy::missing_docs_in_private_items,
clippy::mod_module_files,
clippy::option_if_let_else,
clippy::redundant_pub_crate,
clippy::tabs_in_doc_comments,
clippy::too_many_lines
)]
#![deny(
rustdoc::bare_urls,
rustdoc::broken_intra_doc_links,
rustdoc::invalid_codeblock_attributes,
rustdoc::invalid_html_tags,
rustdoc::missing_crate_level_docs,
rustdoc::private_doc_tests,
rustdoc::private_intra_doc_links
)]
#![allow(
clippy::as_conversions,
clippy::cast_possible_truncation,
clippy::redundant_closure_for_method_calls,
clippy::wildcard_enum_match_arm,
missing_docs,
rustdoc::missing_crate_level_docs
)]
mod arguments;
mod components;
mod events;
mod exit;
mod help;
mod license;
mod module;
mod modules;
mod process;
mod run;
#[cfg(all(unix, test))]
mod tests;
#[cfg(test)]
pub mod testutil;
mod util;
mod version;
use std::ffi::OsString;
use crate::{
arguments::{Args, Mode},
exit::Exit,
};
#[inline]
#[must_use]
pub fn run(os_args: Vec<OsString>) -> Exit {
match Args::try_from(os_args) {
Err(err) => err,
Ok(args) => {
match *args.mode() {
Mode::Help => help::run(),
Mode::Version => version::run(),
Mode::License => license::run(),
Mode::Normal => run::run(&args),
}
},
}
}