mobius_cli/frontend/
dashboard.rs1mod runtime;
4mod state;
5mod view;
6
7use std::io;
8use std::path::PathBuf;
9use std::time::Duration;
10
11use mobius::Result;
12use ratatui::Terminal;
13use ratatui::backend::CrosstermBackend;
14
15use super::setup::{self, SetupMode};
16use super::terminal::TerminalGuard;
17
18use self::runtime::{connect, dashboard_loop};
19
20const REFRESH_INTERVAL: Duration = Duration::from_secs(1);
21
22pub async fn run(state_dir: PathBuf) -> Result<()> {
23 let (sender, mut events, mut state) = connect(state_dir).await?;
24 let _guard = TerminalGuard::alternate()?;
25 let mut terminal = Terminal::new(CrosstermBackend::new(io::stdout()))?;
26 terminal.clear()?;
27 dashboard_loop(&mut terminal, sender, &mut events, &mut state).await
28}
29
30pub async fn run_provider(state_dir: PathBuf) -> Result<()> {
31 let (sender, mut events, mut state) = connect(state_dir).await?;
32 let mut guard = TerminalGuard::alternate()?;
33 guard.set_mouse_capture(false)?;
34 let mut terminal = Terminal::new(CrosstermBackend::new(io::stdout()))?;
35 setup::run_gateway(
36 &mut terminal,
37 SetupMode::Login,
38 &sender,
39 &mut events,
40 &mut state.gateway,
41 )
42 .await
43}
44
45#[cfg(test)]
46mod tests;