mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Fail cleanly instead of panicking for incorrect option arguments
This commit is contained in:
parent
68a8085a2f
commit
4e40fecbdd
1 changed files with 19 additions and 11 deletions
|
@ -635,43 +635,51 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
||||||
};
|
};
|
||||||
|
|
||||||
let tile_size: usize = match opt_match.opt_str("s") {
|
let tile_size: usize = match opt_match.opt_str("s") {
|
||||||
Some(tile_size_str) => tile_size_str.parse().expect("Error parsing option: -s"),
|
Some(tile_size_str) => tile_size_str.parse()
|
||||||
|
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: -s ({})", err))),
|
||||||
None => 512,
|
None => 512,
|
||||||
};
|
};
|
||||||
|
|
||||||
let device_pixels_per_px = opt_match.opt_str("device-pixel-ratio").map(|dppx_str|
|
let device_pixels_per_px = opt_match.opt_str("device-pixel-ratio").map(|dppx_str|
|
||||||
dppx_str.parse().expect("Error parsing option: --device-pixel-ratio")
|
dppx_str.parse()
|
||||||
|
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: --device-pixel-ratio ({})", err)))
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut paint_threads: usize = match opt_match.opt_str("t") {
|
let mut paint_threads: usize = match opt_match.opt_str("t") {
|
||||||
Some(paint_threads_str) => paint_threads_str.parse().expect("Error parsing option: -t"),
|
Some(paint_threads_str) => paint_threads_str.parse()
|
||||||
|
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: -t ({})", err))),
|
||||||
None => cmp::max(num_cpus::get() * 3 / 4, 1),
|
None => cmp::max(num_cpus::get() * 3 / 4, 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
// If only the flag is present, default to a 5 second period for both profilers.
|
// If only the flag is present, default to a 5 second period for both profilers.
|
||||||
let time_profiler_period = opt_match.opt_default("p", "5").map(|period| {
|
let time_profiler_period = opt_match.opt_default("p", "5").map(|period| {
|
||||||
period.parse().expect("Error parsing option: -p")
|
period.parse().unwrap_or_else(|err| args_fail(&format!("Error parsing option: -p ({})", err)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let mem_profiler_period = opt_match.opt_default("m", "5").map(|period| {
|
let mem_profiler_period = opt_match.opt_default("m", "5").map(|period| {
|
||||||
period.parse().expect("Error parsing option: -m")
|
period.parse().unwrap_or_else(|err| args_fail(&format!("Error parsing option: -m ({})", err)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let gpu_painting = !FORCE_CPU_PAINTING && opt_match.opt_present("g");
|
let gpu_painting = !FORCE_CPU_PAINTING && opt_match.opt_present("g");
|
||||||
|
|
||||||
let mut layout_threads: usize = match opt_match.opt_str("y") {
|
let mut layout_threads: usize = match opt_match.opt_str("y") {
|
||||||
Some(layout_threads_str) => layout_threads_str.parse().expect("Error parsing option: -y"),
|
Some(layout_threads_str) => layout_threads_str.parse()
|
||||||
|
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: -y ({})", err))),
|
||||||
None => cmp::max(num_cpus::get() * 3 / 4, 1),
|
None => cmp::max(num_cpus::get() * 3 / 4, 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
let nonincremental_layout = opt_match.opt_present("i");
|
let nonincremental_layout = opt_match.opt_present("i");
|
||||||
|
|
||||||
let random_pipeline_closure_probability = opt_match.opt_str("random-pipeline-closure-probability").map(|prob|
|
let random_pipeline_closure_probability = opt_match.opt_str("random-pipeline-closure-probability").map(|prob|
|
||||||
prob.parse().expect("Error parsing option: --random-pipeline-closure-probability")
|
prob.parse().unwrap_or_else(|err| {
|
||||||
|
args_fail(&format!("Error parsing option: --random-pipeline-closure-probability ({})", err))
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
let random_pipeline_closure_seed = opt_match.opt_str("random-pipeline-closure-seed").map(|seed|
|
let random_pipeline_closure_seed = opt_match.opt_str("random-pipeline-closure-seed").map(|seed|
|
||||||
seed.parse().expect("Error parsing option: --random-pipeline-closure-seed")
|
seed.parse().unwrap_or_else(|err| {
|
||||||
|
args_fail(&format!("Error parsing option: --random-pipeline-closure-seed ({})", err))
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut bubble_inline_sizes_separately = debug_options.bubble_widths;
|
let mut bubble_inline_sizes_separately = debug_options.bubble_widths;
|
||||||
|
@ -682,17 +690,17 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
let devtools_port = opt_match.opt_default("devtools", "6000").map(|port| {
|
let devtools_port = opt_match.opt_default("devtools", "6000").map(|port| {
|
||||||
port.parse().expect("Error parsing option: --devtools")
|
port.parse().unwrap_or_else(|err| args_fail(&format!("Error parsing option: --devtools ({})", err)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let webdriver_port = opt_match.opt_default("webdriver", "7000").map(|port| {
|
let webdriver_port = opt_match.opt_default("webdriver", "7000").map(|port| {
|
||||||
port.parse().expect("Error parsing option: --webdriver")
|
port.parse().unwrap_or_else(|err| args_fail(&format!("Error parsing option: --webdriver ({})", err)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let initial_window_size = match opt_match.opt_str("resolution") {
|
let initial_window_size = match opt_match.opt_str("resolution") {
|
||||||
Some(res_string) => {
|
Some(res_string) => {
|
||||||
let res: Vec<u32> = res_string.split('x').map(|r| {
|
let res: Vec<u32> = res_string.split('x').map(|r| {
|
||||||
r.parse().expect("Error parsing option: --resolution")
|
r.parse().unwrap_or_else(|err| args_fail(&format!("Error parsing option: --resolution ({})", err)))
|
||||||
}).collect();
|
}).collect();
|
||||||
Size2D::typed(res[0], res[1])
|
Size2D::typed(res[0], res[1])
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue