giallo 0.5.0

A code highlighter giving the same output as VSCode
Documentation
use std::env;
use std::fs;

use giallo::{HighlightOptions, Registry, ThemeVariant};
use giallo::{RenderOptions, TerminalRenderer};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<String> = env::args().collect();

    if args.len() < 3 {
        eprintln!(
            "Usage: {} <file_path> <language> <theme> [dark_theme]",
            args[0]
        );
        eprintln!("Examples:");
        eprintln!(
            "  Single theme:     cargo run --example output_terminal --features dump -- file.js javascript catppuccin-frappe"
        );
        std::process::exit(1);
    }

    let file_path = &args[1];
    let language = &args[2];
    let theme = &args[3];

    let mut registry = Registry::builtin()?;
    registry.link_grammars();

    let file_content = fs::read_to_string(file_path)?;

    let options = HighlightOptions::new(language, ThemeVariant::Single(theme));

    let highlighted = registry.highlight(&file_content, &options)?;
    let render_options = RenderOptions {
        show_line_numbers: true,
        ..Default::default()
    };
    let rendered = TerminalRenderer::default().render(&highlighted, &render_options);

    println!("{rendered}");

    Ok(())
}