mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 11:48:30 +00:00
Add nightly check on rustdoc --extend-css option
This commit is contained in:
parent
ab835a12da
commit
f34ae3f7ed
@ -65,8 +65,10 @@ use std::sync::mpsc::channel;
|
|||||||
use externalfiles::ExternalHtml;
|
use externalfiles::ExternalHtml;
|
||||||
use serialize::Decodable;
|
use serialize::Decodable;
|
||||||
use serialize::json::{self, Json};
|
use serialize::json::{self, Json};
|
||||||
|
use rustc::session::early_error;
|
||||||
use rustc::session::search_paths::SearchPaths;
|
use rustc::session::search_paths::SearchPaths;
|
||||||
use rustc::session::config::ErrorOutputType;
|
use rustc::session::config::{get_unstable_features_setting, ErrorOutputType};
|
||||||
|
use syntax::feature_gate::UnstableFeatures;
|
||||||
|
|
||||||
// reexported from `clean` so it can be easily updated with the mod itself
|
// reexported from `clean` so it can be easily updated with the mod itself
|
||||||
pub use clean::SCHEMA_VERSION;
|
pub use clean::SCHEMA_VERSION;
|
||||||
@ -189,6 +191,7 @@ pub fn opts() -> Vec<getopts::OptGroup> {
|
|||||||
optopt("e", "extend-css",
|
optopt("e", "extend-css",
|
||||||
"to redefine some css rules with a given file to generate doc with your \
|
"to redefine some css rules with a given file to generate doc with your \
|
||||||
own theme", "PATH"),
|
own theme", "PATH"),
|
||||||
|
optmulti("Z", "", "internal and debugging options (only on nightly build)", "FLAG"),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,6 +201,20 @@ pub fn usage(argv0: &str) {
|
|||||||
&opts()));
|
&opts()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn check_unstable_flag_enabled(nightly_build: bool, has_z_unstable_options: bool,
|
||||||
|
flag_name: &str) {
|
||||||
|
// check if unstable for --extend-css option
|
||||||
|
let e = if !nightly_build {
|
||||||
|
format!("the option `{}` is only accepted on the nightly compiler", flag_name)
|
||||||
|
} else if !has_z_unstable_options {
|
||||||
|
format!("the `-Z unstable-options` flag must also be passed to enable the flag `{}`",
|
||||||
|
flag_name)
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
};
|
||||||
|
early_error(ErrorOutputType::default(), &e)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn main_args(args: &[String]) -> isize {
|
pub fn main_args(args: &[String]) -> isize {
|
||||||
let matches = match getopts::getopts(&args[1..], &opts()) {
|
let matches = match getopts::getopts(&args[1..], &opts()) {
|
||||||
Ok(m) => m,
|
Ok(m) => m,
|
||||||
@ -260,7 +277,24 @@ pub fn main_args(args: &[String]) -> isize {
|
|||||||
let css_file_extension = matches.opt_str("e").map(|s| PathBuf::from(&s));
|
let css_file_extension = matches.opt_str("e").map(|s| PathBuf::from(&s));
|
||||||
let cfgs = matches.opt_strs("cfg");
|
let cfgs = matches.opt_strs("cfg");
|
||||||
|
|
||||||
|
// we now check if unstable options are allowed and if we're in a nightly build
|
||||||
|
let mut has_z_unstable_options = false;
|
||||||
|
for flag in matches.opt_strs("Z").iter() {
|
||||||
|
if *flag != "unstable-options" {
|
||||||
|
println!("Unknown flag for `Z` option: {}", flag);
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
has_z_unstable_options = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let nightly_build = get_unstable_features_setting();
|
||||||
|
let nightly_build = match nightly_build {
|
||||||
|
UnstableFeatures::Allow | UnstableFeatures::Cheat => true,
|
||||||
|
_ => false,
|
||||||
|
};
|
||||||
|
|
||||||
if let Some(ref p) = css_file_extension {
|
if let Some(ref p) = css_file_extension {
|
||||||
|
check_unstable_flag_enabled(nightly_build, has_z_unstable_options, "extend-css");
|
||||||
if !p.is_file() {
|
if !p.is_file() {
|
||||||
println!("{}", "--extend-css option must take a css file as input");
|
println!("{}", "--extend-css option must take a css file as input");
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user