use crate::error::Result;
use crate::output::{print_global_status, print_sessions_status, print_status};
use crate::state::StateManager;
use crate::Runner;
use super::ensure_project_dir;
pub fn status_command(runner: &Runner) -> Result<()> {
ensure_project_dir()?;
match runner.status() {
Ok(Some(state)) => {
print_status(&state);
Ok(())
}
Ok(None) => {
println!("No active run.");
Ok(())
}
Err(e) => Err(e),
}
}
pub fn global_status_command() -> Result<()> {
let statuses = crate::config::global_status()?;
print_global_status(&statuses);
Ok(())
}
pub fn all_sessions_status_command(project: Option<&str>) -> Result<()> {
let state_manager = if let Some(project_name) = project {
StateManager::for_project(project_name)?
} else {
ensure_project_dir()?;
StateManager::new()?
};
let sessions = state_manager.list_sessions_with_status()?;
if sessions.is_empty() {
println!("No sessions found for this project.");
println!();
println!("Run `autom8 run` to start a session.");
return Ok(());
}
print_sessions_status(&sessions);
Ok(())
}