jimtcl 0.5.0-beta3

Embed Jim Tcl in Rust.
Documentation
use std::{env, mem, os::unix::ffi::OsStrExt, path::Path, process};

use clap::Parser;
use jimtcl::{Interp, JimResult, cli::Jimsh};

fn main() -> JimResult<()> {
    let cli = Jimsh::parse();
    let interp = Interp::new()?;

    if cli.print_version {
        println!("{}", interp.jim_version()?);
        return Ok(());
    }

    if let Some(argv0) = env::args_os().next() {
        interp.set_variable("jim::argv0", argv0.as_bytes())?;
        let path = Path::new(&argv0).canonicalize()?;
        interp.set_variable("jim::exe", path.as_os_str().as_bytes())?;
    }
    cli.setup_env(&interp)?;

    let rc = cli.run(&interp)?;
    mem::drop(interp);
    process::exit(rc);
}