sid-isnt-done 0.3.0

sid is a UNIX-inspired coding agent for Anthropic-compatible APIs
Documentation
use std::io::{self, IsTerminal, Read, Write};

use sid_isnt_done::sidiff::{SidiffOptions, render_diff, run_pager};

fn main() {
    if let Err(err) = try_main() {
        eprintln!("sidiff: {err}");
        std::process::exit(1);
    }
}

fn try_main() -> io::Result<()> {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input)?;

    let options = SidiffOptions {
        use_color: std::env::var_os("NO_COLOR").is_none(),
        ..SidiffOptions::default()
    };

    if io::stdout().is_terminal() {
        run_pager(&input, options)
    } else {
        let mut stdout = io::stdout();
        stdout.write_all(render_diff(&input, options).as_bytes())?;
        stdout.flush()
    }
}