auto merge of #946 : alexcrichton/cargo/issue-933, r=brson

Some workspaces, such as windows, often have the home directory not in the
hierarchy of where projects live, which means that configuration may not work by
default. The home directory, however, is already singled out for `cargo login`
and it's pretty semantically special, so this commit ensures that we always look
at the home directory for configuration if it exists.

Closes #933
This commit is contained in:
bors 2014-11-25 00:18:58 +00:00
commit e91d1280e0
2 changed files with 16 additions and 1 deletions

View File

@ -307,6 +307,21 @@ fn walk_tree(pwd: &Path,
if !current.pop() { break; }
}
// Once we're done, also be sure to walk the home directory even if it's not
// in our history to be sure we pick up that standard location for
// information.
let home = try!(os::homedir().require(|| {
human("Cargo couldn't find your home directory. \
This probably means that $HOME was not set.")
}));
if !home.is_ancestor_of(pwd) {
let config = home.join(".cargo/config");
if config.exists() {
let file = try!(File::open(&config));
try!(walk(file));
}
}
Ok(())
}

View File

@ -18,7 +18,7 @@ pub fn dl_path() -> Path { paths::root().join("dl") }
pub fn dl_url() -> Url { Url::from_file_path(&dl_path()).unwrap() }
pub fn init() {
let config = paths::root().join(".cargo/config");
let config = paths::home().join(".cargo/config");
fs::mkdir_recursive(&config.dir_path(), io::USER_DIR).assert();
File::create(&config).write_str(format!(r#"
[registry]