diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index de6942968ea..c8c83ec5ab5 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -315,6 +315,13 @@ impl Options { return Err(0); } + if matches.opt_strs("print").iter().any(|opt| opt == "unversioned-files") { + for file in crate::html::render::FILES_UNVERSIONED.keys() { + println!("{}", file); + } + return Err(0); + } + let color = config::parse_color(&matches); let (json_rendered, _artifacts) = config::parse_json(&matches); let error_format = config::parse_error_format(&matches, color, json_rendered); diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 50cae50c2c3..9b9ec2581cf 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -33,6 +33,7 @@ mod print_item; mod write_shared; crate use context::*; +crate use write_shared::FILES_UNVERSIONED; use std::cell::{Cell, RefCell}; use std::collections::VecDeque; diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 7fcfe35f9a9..02ad01aa29a 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -3,8 +3,8 @@ use std::fmt::Write; use std::fs::{self, File}; use std::io::prelude::*; use std::io::{self, BufReader}; -use std::path::{Component, Path, PathBuf}; use std::lazy::SyncLazy as Lazy; +use std::path::{Component, Path, PathBuf}; use itertools::Itertools; use rustc_data_structures::flock; @@ -19,6 +19,26 @@ use crate::error::Error; use crate::formats::FormatRenderer; use crate::html::{layout, static_files}; +crate static FILES_UNVERSIONED: Lazy> = Lazy::new(|| { + map! { + "FiraSans-Regular.woff2" => static_files::fira_sans::REGULAR2, + "FiraSans-Medium.woff2" => static_files::fira_sans::MEDIUM2, + "FiraSans-Regular.woff" => static_files::fira_sans::REGULAR, + "FiraSans-Medium.woff" => static_files::fira_sans::MEDIUM, + "FiraSans-LICENSE.txt" => static_files::fira_sans::LICENSE, + "SourceSerifPro-Regular.ttf.woff" => static_files::source_serif_pro::REGULAR, + "SourceSerifPro-Bold.ttf.woff" => static_files::source_serif_pro::BOLD, + "SourceSerifPro-It.ttf.woff" => static_files::source_serif_pro::ITALIC, + "SourceSerifPro-LICENSE.md" => static_files::source_serif_pro::LICENSE, + "SourceCodePro-Regular.woff" => static_files::source_code_pro::REGULAR, + "SourceCodePro-Semibold.woff" => static_files::source_code_pro::SEMIBOLD, + "SourceCodePro-LICENSE.txt" => static_files::source_code_pro::LICENSE, + "LICENSE-MIT.txt" => static_files::LICENSE_MIT, + "LICENSE-APACHE.txt" => static_files::LICENSE_APACHE, + "COPYRIGHT.txt" => static_files::COPYRIGHT, + } +}); + pub(super) fn write_shared( cx: &Context<'_>, krate: &Crate, @@ -213,23 +233,6 @@ themePicker.onblur = handleThemeButtonsBlur; static_files::NORMALIZE_CSS, options.enable_minification, )?; - static FILES_UNVERSIONED: Lazy> = Lazy::new(|| map! { - "FiraSans-Regular.woff2" => static_files::fira_sans::REGULAR2, - "FiraSans-Medium.woff2" => static_files::fira_sans::MEDIUM2, - "FiraSans-Regular.woff" => static_files::fira_sans::REGULAR, - "FiraSans-Medium.woff" => static_files::fira_sans::MEDIUM, - "FiraSans-LICENSE.txt" => static_files::fira_sans::LICENSE, - "SourceSerifPro-Regular.ttf.woff" => static_files::source_serif_pro::REGULAR, - "SourceSerifPro-Bold.ttf.woff" => static_files::source_serif_pro::BOLD, - "SourceSerifPro-It.ttf.woff" => static_files::source_serif_pro::ITALIC, - "SourceSerifPro-LICENSE.md" => static_files::source_serif_pro::LICENSE, - "SourceCodePro-Regular.woff" => static_files::source_code_pro::REGULAR, - "SourceCodePro-Semibold.woff" => static_files::source_code_pro::SEMIBOLD, - "SourceCodePro-LICENSE.txt" => static_files::source_code_pro::LICENSE, - "LICENSE-MIT.txt" => static_files::LICENSE_MIT, - "LICENSE-APACHE.txt" => static_files::LICENSE_APACHE, - "COPYRIGHT.txt" => static_files::COPYRIGHT, - }); for (file, contents) in &*FILES_UNVERSIONED { write(cx.dst.join(file), contents)?; } diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index d214cea8fc4..9e843245442 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -524,6 +524,9 @@ fn opts() -> Vec { "Generate JSON file at the top level instead of generating HTML redirection files", ) }), + unstable("print", |o| { + o.optmulti("", "print", "Rustdoc information to print on stdout", "[unversioned-files]") + }), ] } diff --git a/src/test/run-make-fulldeps/print-unversioned-files/Makefile b/src/test/run-make-fulldeps/print-unversioned-files/Makefile new file mode 100644 index 00000000000..e368f61cddf --- /dev/null +++ b/src/test/run-make-fulldeps/print-unversioned-files/Makefile @@ -0,0 +1,4 @@ +-include ../tools.mk + +all: + $(RUSTDOC) -Z unstable-options --print unversioned-files | sort | diff - unversioned-files.txt diff --git a/src/test/run-make-fulldeps/print-unversioned-files/unversioned-files.txt b/src/test/run-make-fulldeps/print-unversioned-files/unversioned-files.txt new file mode 100644 index 00000000000..c5a9bf24381 --- /dev/null +++ b/src/test/run-make-fulldeps/print-unversioned-files/unversioned-files.txt @@ -0,0 +1,15 @@ +COPYRIGHT.txt +FiraSans-LICENSE.txt +FiraSans-Medium.woff +FiraSans-Medium.woff2 +FiraSans-Regular.woff +FiraSans-Regular.woff2 +LICENSE-APACHE.txt +LICENSE-MIT.txt +SourceCodePro-LICENSE.txt +SourceCodePro-Regular.woff +SourceCodePro-Semibold.woff +SourceSerifPro-Bold.ttf.woff +SourceSerifPro-It.ttf.woff +SourceSerifPro-LICENSE.md +SourceSerifPro-Regular.ttf.woff