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
}