mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +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]) {
|
||||
if lib.is_some() && bin.is_some() {
|
||||
let l = lib.clone().unwrap()[0];
|
||||
let mut path = l.path.clone();
|
||||
fn lib_targets(libs: &[SerializedLibTarget]) -> ~[LibTarget] {
|
||||
let l = &lib[0];
|
||||
let path = l.path.clone().unwrap_or_else(|| format!("src/{}.rs", l.name));
|
||||
~[LibTarget{ path: path, name: l.name.clone() }]
|
||||
}
|
||||
|
||||
if path.is_none() {
|
||||
path = Some(format!("src/{}.rs", l.name));
|
||||
fn bin_targets(bins: &[SerializedExecTarget], default: |&SerializedExecTarget| -> ~str) -> ~[ExecTarget] {
|
||||
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