Rollup merge of #110565 - weihanglo:linkchecker, r=ehuss

linkchecker: running from a directory separate from the book

Since rust-lang/cargo#11851, Cargo became a Cargo workspace of
itself. However, since `src/tools/linkchecker` cannot run inside
a workspace, Cargo needs a workaround that excludes `src/doc`
from workspace member probing.

To remove this hack, this PR adds a new optional argument `--path`
for `linkchecker.sh`. With this new argument, `linkchecker.sh` can
be run from a directory separate from the book. This also benefits
other projects using linkchecker, as they can run it under target
directory or any other directory, reducing leftover.
This commit is contained in:
Matthias Krüger 2023-04-20 17:59:54 +02:00 committed by GitHub
commit 9f39295517
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,15 +16,13 @@
#
# --all Check all books. This can help make sure you don't break links
# from other books into your book.
#
# --path <book-path>
# Path to the root directory for the book. Default to the current
# working directory if omitted.
set -e
if [ ! -f book.toml ] && [ ! -f src/SUMMARY.md ]
then
echo "Run command in root directory of the book."
exit 1
fi
html_dir="$(rustc +nightly --print sysroot)/share/doc/rust/html"
if [ ! -d "$html_dir" ]
@ -38,6 +36,8 @@ fi
export MDBOOK_OUTPUT__HTML__INPUT_404=""
book_name=""
# Default to the current directory
book_path="."
# Iterative will avoid cleaning up, so you can quickly run it repeatedly.
iterative=0
# If "1", test all books, else only this book.
@ -52,6 +52,10 @@ do
--all)
all_books=1
;;
--path)
book_path="${2:-.}"
shift
;;
*)
if [ -n "$book_name" ]
then
@ -70,6 +74,12 @@ then
exit 1
fi
if [ ! -f "$book_path/book.toml" ] && [ ! -f "$book_path/src/SUMMARY.md" ]
then
echo "Run command in root directory of the book or provide a path to the book"
exit 1
fi
if [ ! -d "$html_dir/$book_name" ]
then
echo "book name \"$book_name\" not found in sysroot \"$html_dir\""
@ -93,11 +103,11 @@ then
fi
echo "Building book \"$book_name\"..."
mdbook build
mdbook build "$book_path"
cp -R "$html_dir" linkcheck
rm -rf "linkcheck/$book_name"
cp -R book "linkcheck/$book_name"
cp -R "$book_path/book" "linkcheck/$book_name"
if [ "$all_books" = "1" ]
then