Skip to content

Commit

Permalink
Rollup merge of rust-lang#110565 - weihanglo:linkchecker, r=ehuss
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
matthiaskrgr authored Apr 20, 2023
2 parents 4624616 + 60f1790 commit 9f39295
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions src/tools/linkchecker/linkcheck.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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" ]
Expand All @@ -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.
Expand All @@ -52,6 +52,10 @@ do
--all)
all_books=1
;;
--path)
book_path="${2:-.}"
shift
;;
*)
if [ -n "$book_name" ]
then
Expand All @@ -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\""
Expand All @@ -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
Expand Down

0 comments on commit 9f39295

Please sign in to comment.