Skip to content

Commit 38461f8

Browse files
authored
Rollup merge of #108394 - ferrocene:pa-open, r=ozkanonur
Make `x doc --open` work on every book Before this PR, the `--open` flag had to be configured explicitly for every book, and most of them didn't configure it, resulting in the flag silently failing in all but two books. In this PR, the code to check for the `--open` flag is in the underlying `RustbookSrc` step rather than all the individual steps. This is done by passing the parent step as a field of `RustbookSrc`, so that we can check for the correct step in `maybe_open_in_browser`. This was part of a larger change that in the end wasn't worth it. Still, I think it could be useful as-is.
2 parents f03e534 + 317be61 commit 38461f8

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/bootstrap/doc.rs

+20-15
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ macro_rules! book {
6262
target: self.target,
6363
name: INTERNER.intern_str($book_name),
6464
src: INTERNER.intern_path(builder.src.join($path)),
65+
parent: Some(self),
6566
})
6667
}
6768
}
@@ -119,18 +120,20 @@ impl Step for UnstableBook {
119120
target: self.target,
120121
name: INTERNER.intern_str("unstable-book"),
121122
src: INTERNER.intern_path(builder.md_doc_out(self.target).join("unstable-book")),
123+
parent: Some(self),
122124
})
123125
}
124126
}
125127

126128
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
127-
struct RustbookSrc {
129+
struct RustbookSrc<P: Step> {
128130
target: TargetSelection,
129131
name: Interned<String>,
130132
src: Interned<PathBuf>,
133+
parent: Option<P>,
131134
}
132135

133-
impl Step for RustbookSrc {
136+
impl<P: Step> Step for RustbookSrc<P> {
134137
type Output = ();
135138

136139
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
@@ -152,13 +155,18 @@ impl Step for RustbookSrc {
152155
let index = out.join("index.html");
153156
let rustbook = builder.tool_exe(Tool::Rustbook);
154157
let mut rustbook_cmd = builder.tool_cmd(Tool::Rustbook);
155-
if builder.config.dry_run() || up_to_date(&src, &index) && up_to_date(&rustbook, &index) {
156-
return;
158+
159+
if !builder.config.dry_run() && !(up_to_date(&src, &index) || up_to_date(&rustbook, &index))
160+
{
161+
builder.info(&format!("Rustbook ({}) - {}", target, name));
162+
let _ = fs::remove_dir_all(&out);
163+
164+
builder.run(rustbook_cmd.arg("build").arg(&src).arg("-d").arg(out));
157165
}
158-
builder.info(&format!("Rustbook ({}) - {}", target, name));
159-
let _ = fs::remove_dir_all(&out);
160166

161-
builder.run(rustbook_cmd.arg("build").arg(&src).arg("-d").arg(out));
167+
if self.parent.is_some() {
168+
builder.maybe_open_in_browser::<P>(index)
169+
}
162170
}
163171
}
164172

@@ -205,6 +213,7 @@ impl Step for TheBook {
205213
target,
206214
name: INTERNER.intern_str("book"),
207215
src: INTERNER.intern_path(builder.src.join(&relative_path)),
216+
parent: Some(self),
208217
});
209218

210219
// building older edition redirects
@@ -213,6 +222,9 @@ impl Step for TheBook {
213222
target,
214223
name: INTERNER.intern_string(format!("book/{}", edition)),
215224
src: INTERNER.intern_path(builder.src.join(&relative_path).join(edition)),
225+
// There should only be one book that is marked as the parent for each target, so
226+
// treat the other editions as not having a parent.
227+
parent: Option::<Self>::None,
216228
});
217229
}
218230

@@ -228,10 +240,6 @@ impl Step for TheBook {
228240

229241
invoke_rustdoc(builder, compiler, &shared_assets, target, path);
230242
}
231-
232-
let out = builder.doc_out(target);
233-
let index = out.join("book").join("index.html");
234-
builder.maybe_open_in_browser::<Self>(index);
235243
}
236244
}
237245

@@ -1032,10 +1040,7 @@ impl Step for RustcBook {
10321040
target: self.target,
10331041
name: INTERNER.intern_str("rustc"),
10341042
src: INTERNER.intern_path(out_base),
1043+
parent: Some(self),
10351044
});
1036-
1037-
let out = builder.doc_out(self.target);
1038-
let index = out.join("rustc").join("index.html");
1039-
builder.maybe_open_in_browser::<Self>(index);
10401045
}
10411046
}

0 commit comments

Comments
 (0)