trippy_tui/
lib.rs

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
23/// Run the Trippy application.
24pub 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}