Start breaking up cargo-compile
authorYehuda Katz <wycats@gmail.com>
Mon, 5 May 2014 18:33:04 +0000 (11:33 -0700)
committerYehuda Katz <wycats@gmail.com>
Mon, 5 May 2014 18:33:04 +0000 (11:33 -0700)
src/bin/cargo-compile.rs
src/cargo/ops/cargo_compile.rs

index 9fa581a3ea8ebe029922986e39cfa21723345146..f83993bded093cd7c256c26b228c93d42c1be7f2 100644 (file)
@@ -2,11 +2,32 @@
 #![allow(deprecated_owned_vector)]
 
 extern crate cargo;
+extern crate hammer;
+extern crate serialize;
 
 use cargo::ops::cargo_compile::compile;
+use cargo::{CargoResult,ToCargoError};
+use hammer::{FlagDecoder,FlagConfig,FlagConfiguration,HammerError};
+use serialize::Decodable;
+
+#[deriving(Eq,Clone,Decodable,Encodable)]
+pub struct Options {
+    manifest_path: ~str
+}
+
+impl FlagConfig for Options {}
+
+fn flags<T: FlagConfig + Decodable<FlagDecoder, HammerError>>() -> CargoResult<T> {
+    let mut decoder = FlagDecoder::new::<T>(std::os::args().tail());
+    Decodable::decode(&mut decoder).to_cargo_error(|e: HammerError| e.message, 1)
+}
+
+fn execute() -> CargoResult<()> {
+    compile(try!(flags::<Options>()).manifest_path.as_slice())
+}
 
 fn main() {
-    match compile() {
+    match execute() {
         Err(io_error) => fail!("{}", io_error),
         Ok(_) => return
     }
index 3c258289f72c69c969192122186e4f3d0d340c1e..e904595491c6b60cdf27059cabddbd2253938bf7 100644 (file)
@@ -17,7 +17,6 @@
 use std;
 use std::vec::Vec;
 use serialize::{Decodable};
-use hammer::{FlagDecoder,FlagConfig,FlagConfiguration,HammerError};
 use std::io;
 use std::io::BufReader;
 use std::io::process::{Process,ProcessExit,ProcessOutput,InheritFd,ProcessConfig};