mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Clean up dynamic option checks
This commit is contained in:
parent
c31dc13ac5
commit
521d93a576
@ -81,43 +81,31 @@ fn execute() -> CargoResult<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn normalize(lib: &Option<~[SerializedLibTarget]>, bin: &Option<~[SerializedExecTarget]>) -> (~[LibTarget], ~[ExecTarget]) {
|
fn normalize(lib: &Option<~[SerializedLibTarget]>, bin: &Option<~[SerializedExecTarget]>) -> (~[LibTarget], ~[ExecTarget]) {
|
||||||
if lib.is_some() && bin.is_some() {
|
fn lib_targets(libs: &[SerializedLibTarget]) -> ~[LibTarget] {
|
||||||
let l = lib.clone().unwrap()[0];
|
let l = &lib[0];
|
||||||
let mut path = l.path.clone();
|
let path = l.path.clone().unwrap_or_else(|| format!("src/{}.rs", l.name));
|
||||||
|
~[LibTarget{ path: path, name: l.name.clone() }]
|
||||||
|
}
|
||||||
|
|
||||||
if path.is_none() {
|
fn bin_targets(bins: &[SerializedExecTarget], default: |&SerializedExecTarget| -> ~str) -> ~[ExecTarget] {
|
||||||
path = Some(format!("src/{}.rs", l.name));
|
bins.map(|bin| {
|
||||||
|
let path = bin.path.clone().unwrap_or_else(|| default(bin));
|
||||||
|
ExecTarget{ path: path, name: bin.name.clone() }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
match (lib, bin) {
|
||||||
|
(&Some(ref libs), &Some(ref bins)) => {
|
||||||
|
(lib_targets(libs.as_slice()), bin_targets(bins.as_slice(), |bin| format!("src/bin/{}.rs", bin.name)))
|
||||||
|
},
|
||||||
|
(&Some(ref libs), &None) => {
|
||||||
|
(lib_targets(libs.as_slice()), ~[])
|
||||||
|
},
|
||||||
|
(&None, &Some(ref bins)) => {
|
||||||
|
(~[], bin_targets(bins.as_slice(), |bin| format!("src/{}.rs", bin.name)))
|
||||||
|
},
|
||||||
|
(&None, &None) => {
|
||||||
|
(~[], ~[])
|
||||||
}
|
}
|
||||||
|
|
||||||
let b = bin.get_ref().map(|b_ref| {
|
|
||||||
let b = b_ref.clone();
|
|
||||||
let mut path = b.path.clone();
|
|
||||||
if path.is_none() {
|
|
||||||
path = Some(format!("src/bin/{}.rs", b.name.clone()));
|
|
||||||
}
|
|
||||||
ExecTarget{ path: path.unwrap(), name: b.name }
|
|
||||||
});
|
|
||||||
(~[LibTarget{ path: path.unwrap(), name: l.name }], b)
|
|
||||||
} else if lib.is_some() {
|
|
||||||
let l = lib.clone().unwrap()[0];
|
|
||||||
let mut path = l.path.clone();
|
|
||||||
|
|
||||||
if path.is_none() {
|
|
||||||
path = Some(format!("src/{}.rs", l.name));
|
|
||||||
}
|
|
||||||
|
|
||||||
(~[LibTarget{ path: path.unwrap(), name: l.name }], ~[])
|
|
||||||
} else if bin.is_some() {
|
|
||||||
let b = bin.get_ref().map(|b_ref| {
|
|
||||||
let b = b_ref.clone();
|
|
||||||
let mut path = b.path.clone();
|
|
||||||
if path.is_none() {
|
|
||||||
path = Some(format!("src/{}.rs", b.name.clone()));
|
|
||||||
}
|
|
||||||
ExecTarget{ path: path.unwrap(), name: b.name }
|
|
||||||
});
|
|
||||||
(~[], b)
|
|
||||||
} else {
|
|
||||||
(~[], ~[])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user