#![deny(
clippy::all,
clippy::cargo,
clippy::nursery,
// clippy::restriction,
// clippy::pedantic
)]
#![allow(
clippy::suboptimal_flops,
clippy::redundant_pub_crate,
clippy::fallible_impl_from,
clippy::multiple_crate_versions
)]
#![allow(clippy::use_self)]
#![deny(missing_docs)]
#![deny(missing_debug_implementations)]
#![deny(rustdoc::all)]
mod addr_width;
mod cli;
mod page_table_index;
mod paging_info;
mod print;
use crate::cli::{CliArgs, ColorOption};
use crate::print::USE_ANSI;
use clap::Parser;
use std::sync::atomic::Ordering;
fn main() {
let cli: CliArgs = CliArgs::parse();
configure_ansi_setting(cli.color.unwrap_or_default());
print::print(&cli);
}
fn configure_ansi_setting(cfg: ColorOption) {
let use_ansi = match cfg {
ColorOption::Never => false,
ColorOption::Auto => ansi_auto_detection(),
ColorOption::Always => true,
};
#[cfg(target_os = "windows")]
if use_ansi {
let _ = nu_ansi_term::enable_ansi_support();
}
USE_ANSI.store(use_ansi, Ordering::SeqCst);
}
fn ansi_auto_detection() -> bool {
atty::is(atty::Stream::Stdout)
}
#[cfg(test)]
mod tests {
}