import rustc::syntax::{ast, codemap, visit};
import rustc::syntax::parse::parser;
+import rustc::util::filesearch::get_cargo_root;
import std::fs;
import std::generic_os;
}
fn configure() -> cargo {
- let p = alt generic_os::getenv("CARGO_ROOT") {
- some(_p) { _p }
- none. {
- alt generic_os::getenv("HOME") {
- some(_q) { fs::connect(_q, ".cargo") }
- none. { fail "no CARGO_ROOT or HOME"; }
- }
- }
+ let p = alt get_cargo_root() {
+ result::ok(p) { p }
+ result::err(e) { fail e }
};
let sources = map::new_str_hash::<source>();
import std::fs;
import vec;
import std::os;
+import result;
+import std::generic_os;
export filesearch;
export mk_filesearch;
export pick_file;
export search;
export relative_target_lib_path;
+export get_cargo_root;
type pick<T> = block(path: fs::path) -> option::t<T>;
fn lib_search_paths() -> [fs::path] {
addl_lib_search_paths
+ [make_target_lib_path(sysroot, target_triple)]
+ + alt get_cargo_lib_path() {
+ result::ok(p) { [p] }
+ result::err(p) { [] }
+ }
}
fn get_target_lib_path() -> fs::path {
option::none. { get_default_sysroot() }
}
}
+
+fn get_cargo_root() -> result::t<fs::path, str> {
+ alt generic_os::getenv("CARGO_ROOT") {
+ some(_p) { result::ok(_p) }
+ none. {
+ alt generic_os::getenv("HOME") {
+ some(_q) { result::ok(fs::connect(_q, ".cargo")) }
+ none. { result::err("no CARGO_ROOT or HOME") }
+ }
+ }
+ }
+}
+
+fn get_cargo_lib_path() -> result::t<fs::path, str> {
+ result::chain(get_cargo_root()) { |p|
+ result::ok(fs::connect(p, "lib"))
+ }
+}
\ No newline at end of file