gbin 0.4.0

A suite of Linux utilities and programs.
use crate::{
    audio::AudioTUI,
    cli::{Cli, MainCommands, NetworkCommands},
    network::{NetworkManagerState, NetworkManagerTui},
};
use clap::Parser;

pub mod audio;
pub mod cli;
pub mod network;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let cli = Cli::parse();
    let mut terminal = ratatui::init();
    let result = match &cli.command {
        Some(MainCommands::Network { module }) => {
            let nm_state = match module {
                Some(NetworkCommands::Bluetooth {}) => NetworkManagerState::BLUETOOTH,
                Some(NetworkCommands::Wifi {}) => NetworkManagerState::WIFI,
                None => NetworkManagerState::WIFI,
            };
            let mut nm_tui = NetworkManagerTui::new(nm_state);
            nm_tui.run(&mut terminal).await
        }
        Some(MainCommands::Audio {}) => {
            let mut a_tui = AudioTUI::new();
            let result = a_tui.run(&mut terminal).await;
            result
        }
        None => Ok(()),
    };
    ratatui::restore();
    result
}