rusht 1.1.0

Shell commands written in Rust
Documentation
use crate::ExitStatus;
use ::log::debug;

use crate::rsh::rsh_args::RshArgs;
use crate::rsh::rsh_build::compile_rsh;
use crate::rsh::rsh_context::rsh_context;
use crate::rsh::rsh_read::load_source;
use crate::rsh::rsh_run::execute;

pub fn rsh(args: RshArgs) -> Result<ExitStatus, String> {
    debug!("{:?}", args);
    let context = rsh_context()?;
    let prog = load_source(&args.script)?;
    let state = compile_rsh(&context, &prog, &args)?;
    if args.build_only {
        println!(
            "build done, executable in {}",
            state
                .exe_path
                .to_str()
                .expect("executable path is not unicode")
        );
        Ok(ExitStatus::ok())
    } else {
        execute(&prog, &state, &args)
    }
}