Merge pull request #1365 from elly/cargo
cargo: allow 'ref' package key for git packages.
This commit is contained in:
commit
085c813fe3
@ -31,6 +31,7 @@ type package = {
|
|||||||
uuid: str,
|
uuid: str,
|
||||||
url: str,
|
url: str,
|
||||||
method: str,
|
method: str,
|
||||||
|
ref: option::t<str>,
|
||||||
tags: [str]
|
tags: [str]
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -242,6 +243,11 @@ fn load_one_source_package(&src: source, p: map::hashmap<str, json::json>) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let ref = alt p.find("ref") {
|
||||||
|
some(json::string(_n)) { some(_n) }
|
||||||
|
_ { none }
|
||||||
|
};
|
||||||
|
|
||||||
let tags = [];
|
let tags = [];
|
||||||
alt p.find("tags") {
|
alt p.find("tags") {
|
||||||
some(json::list(js)) {
|
some(json::list(js)) {
|
||||||
@ -260,6 +266,7 @@ fn load_one_source_package(&src: source, p: map::hashmap<str, json::json>) {
|
|||||||
uuid: uuid,
|
uuid: uuid,
|
||||||
url: url,
|
url: url,
|
||||||
method: method,
|
method: method,
|
||||||
|
ref: ref,
|
||||||
tags: tags
|
tags: tags
|
||||||
});
|
});
|
||||||
log " Loaded package: " + src.name + "/" + name;
|
log " Loaded package: " + src.name + "/" + name;
|
||||||
@ -398,8 +405,14 @@ fn install_source(c: cargo, path: str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn install_git(c: cargo, wd: str, url: str) {
|
fn install_git(c: cargo, wd: str, url: str, ref: option::t<str>) {
|
||||||
run::run_program("git", ["clone", url, wd]);
|
run::run_program("git", ["clone", url, wd]);
|
||||||
|
if option::is_some::<str>(ref) {
|
||||||
|
let r = option::get::<str>(ref);
|
||||||
|
fs::change_dir(wd);
|
||||||
|
run::run_program("git", ["checkout", r]);
|
||||||
|
}
|
||||||
|
|
||||||
install_source(c, wd);
|
install_source(c, wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -424,7 +437,7 @@ fn install_file(c: cargo, wd: str, path: str) {
|
|||||||
fn install_package(c: cargo, wd: str, pkg: package) {
|
fn install_package(c: cargo, wd: str, pkg: package) {
|
||||||
info("Installing with " + pkg.method + " from " + pkg.url + "...");
|
info("Installing with " + pkg.method + " from " + pkg.url + "...");
|
||||||
if pkg.method == "git" {
|
if pkg.method == "git" {
|
||||||
install_git(c, wd, pkg.url);
|
install_git(c, wd, pkg.url, pkg.ref);
|
||||||
} else if pkg.method == "http" {
|
} else if pkg.method == "http" {
|
||||||
install_curl(c, wd, pkg.url);
|
install_curl(c, wd, pkg.url);
|
||||||
} else if pkg.method == "file" {
|
} else if pkg.method == "file" {
|
||||||
|
Loading…
Reference in New Issue
Block a user