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)
$(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)
-Subproject commit 894fdd9db6c50b9a70d1fc7d4e49c76e86921016
+Subproject commit 1389ceb42b2ae04dac40c8b2d4af8fe21823ecbc
+++ /dev/null
-#[crate_type="rlib"];
-
-extern crate serialize;
-use serialize::{Decoder};
-use std::fmt;
-use std::fmt::{Show,Formatter};
-
-#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
-pub struct Manifest {
- project: ~Project,
- root: ~str,
- lib: ~[LibTarget],
- bin: ~[ExecTarget]
-}
-
-#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
-pub struct ExecTarget {
- name: ~str,
- path: ~str
-}
-
-#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
-pub struct LibTarget {
- name: ~str,
- path: ~str
-}
-
-//pub type LibTarget = Target;
-//pub type ExecTarget = Target;
-
-#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
-pub struct Project {
- name: ~str,
- version: ~str,
- authors: ~[~str]
-}
-
-pub type CargoResult<T> = Result<T, CargoError>;
-
-pub struct CargoError {
- message: ~str,
- exit_code: uint
-}
-
-impl CargoError {
- pub fn new(message: ~str, exit_code: uint) -> CargoError {
- CargoError { message: message, exit_code: exit_code }
- }
-}
-
-impl Show for CargoError {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- write!(f.buf, "{}", self.message)
- }
-}
-
-pub trait ToCargoError<T> {
- fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result<T, CargoError>;
-}
-
-impl<T,U> ToCargoError<T> for Result<T,U> {
- fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result<T, CargoError> {
- match self {
- Err(_) => Err(CargoError{ message: message, exit_code: exit_code }),
- Ok(val) => Ok(val)
- }
- }
-}
-
-impl<T> ToCargoError<T> for Option<T> {
- fn to_cargo_error(self, message: ~str, exit_code: uint) -> CargoResult<T> {
- match self {
- None => Err(CargoError{ message: message, exit_code: exit_code }),
- Some(val) => Ok(val)
- }
- }
-}
--- /dev/null
+#[crate_id="cargo"];
+#[crate_type="rlib"];
+
+extern crate serialize;
+use serialize::{Decoder};
+use std::fmt;
+use std::fmt::{Show,Formatter};
+
+#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
+pub struct Manifest {
+ project: ~Project,
+ root: ~str,
+ lib: ~[LibTarget],
+ bin: ~[ExecTarget]
+}
+
+#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
+pub struct ExecTarget {
+ name: ~str,
+ path: ~str
+}
+
+#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
+pub struct LibTarget {
+ name: ~str,
+ path: ~str
+}
+
+//pub type LibTarget = Target;
+//pub type ExecTarget = Target;
+
+#[deriving(Decodable,Encodable,Eq,Clone,Ord)]
+pub struct Project {
+ name: ~str,
+ version: ~str,
+ authors: ~[~str]
+}
+
+pub type CargoResult<T> = Result<T, CargoError>;
+
+pub struct CargoError {
+ message: ~str,
+ exit_code: uint
+}
+
+impl CargoError {
+ pub fn new(message: ~str, exit_code: uint) -> CargoError {
+ CargoError { message: message, exit_code: exit_code }
+ }
+}
+
+impl Show for CargoError {
+ fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+ write!(f.buf, "{}", self.message)
+ }
+}
+
+pub trait ToCargoError<T> {
+ fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result<T, CargoError>;
+}
+
+impl<T,U> ToCargoError<T> for Result<T,U> {
+ fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result<T, CargoError> {
+ match self {
+ Err(_) => Err(CargoError{ message: message, exit_code: exit_code }),
+ Ok(val) => Ok(val)
+ }
+ }
+}
+
+impl<T> ToCargoError<T> for Option<T> {
+ fn to_cargo_error(self, message: ~str, exit_code: uint) -> CargoResult<T> {
+ match self {
+ None => Err(CargoError{ message: message, exit_code: exit_code }),
+ Some(val) => Ok(val)
+ }
+ }
+}
--- /dev/null
+pub use self::process::process;
--- /dev/null
+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(~[])
+}
version = "0.5.0"
authors = ["wycats@example.com"]
- [[lib]]
+ [[bin]]
name = "foo"
"#)
}"#)
.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