mirror of https://github.com/rust-lang/rust.git
Auto merge of #125207 - GuillaumeGomez:migrate-rustdoc-scrape-examples-ordering, r=jieyouxu
Migrate `run-make/rustdoc-scrape-examples-remap` to `rmake.rs` Part of https://github.com/rust-lang/rust/issues/121876. r? `@jieyouxu`
This commit is contained in:
commit
550d1b4fb6
|
@ -239,7 +239,6 @@ run-make/rustdoc-io-error/Makefile
|
|||
run-make/rustdoc-scrape-examples-invalid-expr/Makefile
|
||||
run-make/rustdoc-scrape-examples-macros/Makefile
|
||||
run-make/rustdoc-scrape-examples-multiple/Makefile
|
||||
run-make/rustdoc-scrape-examples-remap/Makefile
|
||||
run-make/rustdoc-scrape-examples-test/Makefile
|
||||
run-make/rustdoc-scrape-examples-whitespace/Makefile
|
||||
run-make/rustdoc-verify-output-files/Makefile
|
||||
|
|
|
@ -1,49 +1,6 @@
|
|||
use run_make_support::{htmldocck, rustc, rustdoc, source_path, tmp_dir};
|
||||
use std::fs::read_dir;
|
||||
use std::path::Path;
|
||||
#[path = "../rustdoc-scrape-examples-remap/scrape.rs"]
|
||||
mod scrape;
|
||||
|
||||
fn main() {
|
||||
let lib_dir = tmp_dir();
|
||||
let out_dir = tmp_dir().join("rustdoc");
|
||||
let crate_name = "foobar";
|
||||
let deps = read_dir("examples")
|
||||
.unwrap()
|
||||
.filter_map(|entry| entry.ok().map(|e| e.path()))
|
||||
.filter(|path| path.is_file() && path.extension().is_some_and(|ext| ext == "rs"))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
rustc().input("src/lib.rs").crate_name(crate_name).crate_type("lib").emit("metadata").run();
|
||||
|
||||
let mut out_deps = Vec::with_capacity(deps.len());
|
||||
for dep in deps {
|
||||
let dep_stem = dep.file_stem().unwrap();
|
||||
let out_example = out_dir.join(format!("{}.calls", dep_stem.to_str().unwrap()));
|
||||
rustdoc()
|
||||
.input(&dep)
|
||||
.crate_name(&dep_stem)
|
||||
.crate_type("bin")
|
||||
.output(&out_dir)
|
||||
.extern_(crate_name, lib_dir.join(format!("lib{crate_name}.rmeta")))
|
||||
.arg("-Zunstable-options")
|
||||
.arg("--scrape-examples-output-path")
|
||||
.arg(&out_example)
|
||||
.arg("--scrape-examples-target-crate")
|
||||
.arg(crate_name)
|
||||
.run();
|
||||
out_deps.push(out_example);
|
||||
}
|
||||
|
||||
let mut rustdoc = rustdoc();
|
||||
rustdoc
|
||||
.input("src/lib.rs")
|
||||
.output(&out_dir)
|
||||
.crate_name(crate_name)
|
||||
.crate_type("lib")
|
||||
.arg("-Zunstable-options");
|
||||
for dep in out_deps {
|
||||
rustdoc.arg("--with-examples").arg(dep);
|
||||
}
|
||||
rustdoc.run();
|
||||
|
||||
assert!(htmldocck().arg(out_dir).arg("src/lib.rs").status().unwrap().success());
|
||||
scrape::scrape();
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
deps := ex
|
||||
|
||||
include ../rustdoc-scrape-examples-multiple/scrape.mk
|
||||
|
||||
all: scrape
|
|
@ -0,0 +1,5 @@
|
|||
mod scrape;
|
||||
|
||||
fn main() {
|
||||
scrape::scrape();
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
use run_make_support::{htmldocck, rustc, rustdoc, source_path, tmp_dir};
|
||||
use std::fs::read_dir;
|
||||
use std::path::Path;
|
||||
|
||||
pub fn scrape() {
|
||||
let lib_dir = tmp_dir();
|
||||
let out_dir = tmp_dir().join("rustdoc");
|
||||
let crate_name = "foobar";
|
||||
let deps = read_dir("examples")
|
||||
.unwrap()
|
||||
.filter_map(|entry| entry.ok().map(|e| e.path()))
|
||||
.filter(|path| path.is_file() && path.extension().is_some_and(|ext| ext == "rs"))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
rustc().input("src/lib.rs").crate_name(crate_name).crate_type("lib").emit("metadata").run();
|
||||
|
||||
let mut out_deps = Vec::with_capacity(deps.len());
|
||||
for dep in deps {
|
||||
let dep_stem = dep.file_stem().unwrap();
|
||||
let out_example = out_dir.join(format!("{}.calls", dep_stem.to_str().unwrap()));
|
||||
rustdoc()
|
||||
.input(&dep)
|
||||
.crate_name(&dep_stem)
|
||||
.crate_type("bin")
|
||||
.output(&out_dir)
|
||||
.extern_(crate_name, lib_dir.join(format!("lib{crate_name}.rmeta")))
|
||||
.arg("-Zunstable-options")
|
||||
.arg("--scrape-examples-output-path")
|
||||
.arg(&out_example)
|
||||
.arg("--scrape-examples-target-crate")
|
||||
.arg(crate_name)
|
||||
.run();
|
||||
out_deps.push(out_example);
|
||||
}
|
||||
|
||||
let mut rustdoc = rustdoc();
|
||||
rustdoc
|
||||
.input("src/lib.rs")
|
||||
.output(&out_dir)
|
||||
.crate_name(crate_name)
|
||||
.crate_type("lib")
|
||||
.arg("-Zunstable-options");
|
||||
for dep in out_deps {
|
||||
rustdoc.arg("--with-examples").arg(dep);
|
||||
}
|
||||
rustdoc.run();
|
||||
|
||||
assert!(htmldocck().arg(out_dir).arg("src/lib.rs").status().unwrap().success());
|
||||
}
|
Loading…
Reference in New Issue