about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2021-03-05 10:54:37 -0500
committerJoshua Nelson <jyn514@gmail.com>2021-03-05 15:31:30 -0500
commit173d2aaa009d7d1b76addefc204a2bde329caa83 (patch)
tree621661d8b266f7103fd7b5a176977aa264d27e79
parent69a879f3d199580dde491bb679df319867a44e56 (diff)
downloadrust-173d2aaa009d7d1b76addefc204a2bde329caa83.tar.gz
rust-173d2aaa009d7d1b76addefc204a2bde329caa83.zip
Add an unstable option to print all unversioned files
This allows sharing those files between different doc invocations
without having to know their names ahead of time.
-rw-r--r--src/librustdoc/config.rs7
-rw-r--r--src/librustdoc/html/render/mod.rs1
-rw-r--r--src/librustdoc/html/render/write_shared.rs39
-rw-r--r--src/librustdoc/lib.rs3
-rw-r--r--src/test/run-make-fulldeps/print-unversioned-files/Makefile4
-rw-r--r--src/test/run-make-fulldeps/print-unversioned-files/unversioned-files.txt15
6 files changed, 51 insertions, 18 deletions
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<FxHashMap<&str, &[u8]>> = 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<FxHashMap<&str, &[u8]>> = 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<RustcOptGroup> {
                 "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