use std::io::IsTerminal;
use anyhow::{Context, Result};
use crate::cli::Cli;
use crate::config::Config;
use hm_render::OutputMode;
#[derive(Debug)]
pub struct RunContext {
pub config: Config,
pub output: OutputMode,
}
impl RunContext {
pub fn from_cli(cli: &Cli) -> Result<Self> {
let start_dir = std::env::current_dir().context("cannot determine current directory")?;
let project_root = hm_util::dirs::find_project_root(&start_dir);
let config = Config::load(project_root.as_deref())?;
let output = OutputMode::Human {
color: hm_render::color_enabled(cli.no_color),
interactive: std::io::stdout().is_terminal(),
};
Ok(Self { config, output })
}
}