ksl 0.1.5

KSL core library and interpreter
Documentation
use ksl::{eval::eval, init_environment, repl};

fn main() {
    let args = std::env::args().collect::<Vec<String>>();
    if args.len() == 1 {
        repl();
    } else if args.len() == 2 {
        let param = &args[1];
        match param.trim() {
            "-h" => cli_helper(),
            file_path => {
                match std::fs::read_to_string(file_path)
                    .map(|source| eval(&source, &init_environment()))
                {
                    Ok(Some((result, _))) => println!("{}", result),
                    _ => {
                        eprintln!("Failed to evaluate `{}`", file_path);
                    }
                }
            }
        }
    } else {
        eprintln!("Invalid args: {:?}", args);
        cli_helper();
    }
}

fn cli_helper() {
    println!("Avaliable argument:");
    println!("<file-path>: file to evaluate");
    println!("-h:  show this message");
}