use std::io::process::{Command,ProcessOutput};

fn main() {
    // Initial command `rustc`
    let mut cmd = Command::new("rustc");
    // append the "--version" flag to the command
    cmd.arg("--version");

    // The `output` method will spawn `rustc --version`, wait until the process
    // finishes and return the output of the process
    match cmd.output() {
        Err(why) => fail!("couldn't spawn rustc: {}", why.desc),
        // Destructure `ProcessOutput`
        Ok(ProcessOutput { error: err, output: out, status: exit }) => {
            // Check if the process succeeded, i.e. the exit code was 0
            if exit.success() {
                // `out` has type `Vec<u8>`, convert it to a UTF-8 `$str`
                let s = String::from_utf8_lossy(out.as_slice());

                print!("rustc succeeded and stdout was:\n{}", s);
            } else {
                // `err` also has type `Vec<u8>`
                let s = String::from_utf8_lossy(err.as_slice());

                print!("rustc failed and stderr was:\n{}", s);
            }
        },
    }
}
