use term::color::{GREEN, RED, WHITE};
use term::{Attr, Error, Result};

fn main() {
    if foo().is_err() {
        eprintln!(
            "error: Clippy is no longer available via crates.io\n\n\
             help: please run `rustup component add clippy` instead"
        );
    }
    std::process::exit(1);
}

fn foo() -> Result<()> {
    let mut t = term::stderr().ok_or(Error::NotSupported)?;

    t.attr(Attr::Bold)?;
    t.fg(RED)?;
    write!(t, "\nerror: ")?;

    t.reset()?;
    t.fg(WHITE)?;
    writeln!(t, "Clippy is no longer available via crates.io\n")?;

    t.attr(Attr::Bold)?;
    t.fg(GREEN)?;
    write!(t, "help: ")?;

    t.reset()?;
    t.fg(WHITE)?;
    write!(t, "please run `")?;

    t.attr(Attr::Bold)?;
    write!(t, "rustup component add clippy")?;

    t.reset()?;
    t.fg(WHITE)?;
    writeln!(t, "` instead")?;

    t.reset()?;
    Ok(())
}