umka 0.1.0

high level bindings for umka
Documentation
use std::{fs::File, io::BufReader, path::Path};

use umka::Umka;

fn main() -> anyhow::Result<()> {
    println!("{}", umka::version());

    let ret = hello_world()?;
    println!("return code: {ret}");

    Ok(())
}

fn hello_world() -> anyhow::Result<i32> {
    let umka = Umka::new(file_reader("hello_world.um")?, "hello_world.um")?;
    umka.add_module(file_reader("greet.um")?, "greet.um")?;
    umka.compile()?;
    Ok(umka.run())
}

fn file_reader(name: &str) -> anyhow::Result<BufReader<File>> {
    let file = File::open(Path::new("umka/examples").join(name))?;
    Ok(BufReader::new(file))
}