pub mod path_field;
pub mod screens;
pub mod settings;
pub mod shell;
pub mod table;
use std::process::ExitCode;
use std::sync::Arc;
#[cfg(test)]
pub fn buffer_text(buffer: &ratatui::buffer::Buffer) -> String {
let area = buffer.area();
(0..area.height)
.map(|y| {
(0..area.width)
.map(|x| buffer[(x, y)].symbol())
.collect::<String>()
})
.collect::<Vec<_>>()
.join(
"
",
)
}
pub fn run(data_dir: Option<&std::path::Path>) -> ExitCode {
let mut err = std::io::stderr();
let context = match crate::cli::Context::resolve(data_dir, &mut err) {
Ok(context) => Arc::new(context),
Err(error) => {
let _ = error.render(&mut err);
return ExitCode::from(error.class().code());
}
};
match shell::run_terminal(context) {
Ok(()) => ExitCode::SUCCESS,
Err(error) => {
eprintln!("runner-manager: terminal UI failed: {error}");
ExitCode::FAILURE
}
}
}