use std::io::IsTerminal;
use anyhow::Result;
use crate::cli::Cli;
use crate::config::Config;
use crate::output::OutputMode;
#[derive(Debug)]
pub struct RunContext {
pub config: Config,
pub output: OutputMode,
}
impl RunContext {
pub fn from_cli(cli: &Cli) -> Result<Self> {
let config = Config::load()?;
let color =
!cli.no_color && std::env::var("NO_COLOR").is_err() && std::io::stderr().is_terminal();
let output = OutputMode::Human {
color,
interactive: std::io::stdout().is_terminal(),
};
Ok(Self { config, output })
}
}