continuous-testing 0.0.2

A continue testing library
use std::env::args;
use std::process::{exit, ExitCode};
use continuous::testing::Encore;


fn check(x: &Option<String>)
{
    if x.is_none() {
        println!("{}", "again <directory> <os> <memory_size> <cpus> <commands>");
        exit(1);
    }
}

fn main() -> ExitCode {

    let directory_binding = args().nth(1);

    let mut vm = Encore::new();

    check(&directory_binding);

    let directory = match directory_binding {
        Some(ref v) => v,
        None => exit(1),
    };

    vm.set_directory(directory.as_str());

    let os_binding = args().nth(2);

    check(&os_binding);

    let os = match os_binding {
        Some(ref v) => v,
        None => exit(1),
    };

    vm.set_os(os.as_str());

    let memory_binding = args().nth(3);

    check(&memory_binding);

    let memory = match memory_binding {
        Some(ref v) => v,
        None => exit(1),
    };

    vm.set_memory(memory.as_str());

    let cpus_binding = args().nth(4);

    check(&cpus_binding);

    let cpus = match cpus_binding {
        Some(ref v) => v,
        None => exit(1),
    };

    vm.set_cpus(cpus.as_str());

    let command_binding = args().nth(5);

    check(&command_binding);

    let command = match command_binding {
        Some(ref v) => v,
        None => exit(1),
    };

    vm.set_command(command.as_str());

    if vm.run().is_ok() {
        exit(0);
    }
    exit(1);
}