From 4274ac261f11237b0ede34828ad149ee0ed02cc3 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Wed, 19 Mar 2014 11:44:43 -0700 Subject: [PATCH] Trying to shell out --- Makefile | 5 +++-- libs/rust-toml | 2 +- src/{cargo.rs => cargo/mod.rs} | 1 + src/cargo/util/mod.rs | 1 + src/cargo/util/process.rs | 25 +++++++++++++++++++++++++ tests/test_cargo_compile.rs | 8 +++++++- 6 files changed, 38 insertions(+), 4 deletions(-) rename src/{cargo.rs => cargo/mod.rs} (98%) create mode 100644 src/cargo/util/mod.rs create mode 100644 src/cargo/util/process.rs diff --git a/Makefile b/Makefile index 663e314de..71c621d3e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,8 @@ BINS = cargo-compile \ cargo-rustc \ cargo-verify-project -SRC = $(wildcard src/*.rs) +SRC = $(shell find src -name '*.rs') + DEPS = -L libs/hammer.rs/target -L libs/rust-toml/lib TOML = libs/rust-toml/lib/$(shell rustc --crate-file-name libs/rust-toml/src/toml/lib.rs) HAMMER = libs/hammer.rs/target/$(shell rustc --crate-type=lib --crate-file-name libs/hammer.rs/src/hammer.rs) @@ -32,7 +33,7 @@ $(HAMCREST): $(wildcard libs/hamcrest-rust/src/*.rs) $(LIBCARGO): $(SRC) mkdir -p target - $(RUSTC) $(RUSTC_FLAGS) --out-dir target src/cargo.rs + $(RUSTC) $(RUSTC_FLAGS) --out-dir target src/cargo/mod.rs touch $(LIBCARGO) libcargo: $(LIBCARGO) diff --git a/libs/rust-toml b/libs/rust-toml index 894fdd9db..1389ceb42 160000 --- a/libs/rust-toml +++ b/libs/rust-toml @@ -1 +1 @@ -Subproject commit 894fdd9db6c50b9a70d1fc7d4e49c76e86921016 +Subproject commit 1389ceb42b2ae04dac40c8b2d4af8fe21823ecbc diff --git a/src/cargo.rs b/src/cargo/mod.rs similarity index 98% rename from src/cargo.rs rename to src/cargo/mod.rs index 13a2ea5a8..c33c7fde6 100644 --- a/src/cargo.rs +++ b/src/cargo/mod.rs @@ -1,3 +1,4 @@ +#[crate_id="cargo"]; #[crate_type="rlib"]; extern crate serialize; diff --git a/src/cargo/util/mod.rs b/src/cargo/util/mod.rs new file mode 100644 index 000000000..5d5d99681 --- /dev/null +++ b/src/cargo/util/mod.rs @@ -0,0 +1 @@ +pub use self::process::process; diff --git a/src/cargo/util/process.rs b/src/cargo/util/process.rs new file mode 100644 index 000000000..c62907ea3 --- /dev/null +++ b/src/cargo/util/process.rs @@ -0,0 +1,25 @@ +use std::os; +use std::io::process::{Process,ProcessConfig,InheritFd}; + +pub struct ProcessBuilder { + program: ~str, + args: ~[~str], + path: ~[~str] +} + +impl ProcessBuilder { + fn args(mut self, arguments: &[~str]) -> ProcessBuilder { + self.args = arguments.clone(); + self + } +} + +pub fn process(cmd: &str) -> ProcessBuilder { + ProcessBuilder { program: cmd.to_owned(), args: ~[], path: get_curr_path() } +} + +fn get_curr_path() -> ~[~str] { + os::getenv("PATH").map(|path| { + path.split(std::path::SEP).collect() + }).or(~[]) +} diff --git a/tests/test_cargo_compile.rs b/tests/test_cargo_compile.rs index 70ff54252..8594d320c 100644 --- a/tests/test_cargo_compile.rs +++ b/tests/test_cargo_compile.rs @@ -13,7 +13,7 @@ test!(cargo_compile_with_explicit_manifest_path { version = "0.5.0" authors = ["wycats@example.com"] - [[lib]] + [[bin]] name = "foo" "#) @@ -23,6 +23,12 @@ test!(cargo_compile_with_explicit_manifest_path { }"#) .build(); + cargo::util::process("cargo-compile") + .args([]); + // //.extra_path("target/") + // //.cwd("/foo/bar") + // //.exec_with_output() + fail!("not implemented"); // 1) Setup project // 2) Run cargo-compile --manifest-path /tmp/bar/zomg