1#![allow(
2 clippy::struct_excessive_bools,
3 clippy::cast_sign_loss,
4 clippy::struct_field_names
5)]
6#![forbid(unsafe_code)]
7
8use crate::config::TrippyAction;
9use clap::Parser;
10use config::Args;
11use std::process;
12use trippy_privilege::Privilege;
13
14mod app;
15mod config;
16mod frontend;
17mod geoip;
18mod locale;
19mod print;
20mod report;
21mod util;
22
23pub fn trippy() -> anyhow::Result<()> {
25 let args = Args::parse();
26 let privilege = Privilege::acquire_privileges()?;
27 let pid = u16::try_from(process::id() % u32::from(u16::MAX))?;
28 match TrippyAction::from(args, &privilege, pid)? {
29 TrippyAction::Trippy(cfg) => app::run_trippy(&cfg, pid)?,
30 TrippyAction::PrintTuiThemeItems => print::print_tui_theme_items(),
31 TrippyAction::PrintTuiBindingCommands => print::print_tui_binding_commands(),
32 TrippyAction::PrintConfigTemplate => print::print_config_template(),
33 TrippyAction::PrintManPage => print::print_man_page()?,
34 TrippyAction::PrintShellCompletions(shell) => print::print_shell_completions(shell)?,
35 TrippyAction::PrintLocales => print::print_locales(),
36 }
37 Ok(())
38}