[packages/mdbook-linkcheck] add fix for mdbook >= 0.5; rel 3
atler
atler at pld-linux.org
Sat Mar 28 18:11:55 CET 2026
commit 364702c903539f2930bdfc1ed1dd27529863dfe7
Author: Jan Palus <atler at pld-linux.org>
Date: Sat Mar 28 18:09:31 2026 +0100
add fix for mdbook >= 0.5; rel 3
from: https://github.com/Michael-F-Bryan/mdbook-linkcheck/pull/98
mdbook-0.5.patch | 1918 +++++++++++++++++++++++++++++++++++++++++++++++++
mdbook-linkcheck.spec | 9 +-
2 files changed, 1923 insertions(+), 4 deletions(-)
---
diff --git a/mdbook-linkcheck.spec b/mdbook-linkcheck.spec
index adf73d9..b5b8393 100644
--- a/mdbook-linkcheck.spec
+++ b/mdbook-linkcheck.spec
@@ -2,7 +2,7 @@ Summary: Utility to create modern online books from Markdown files
Summary(pl.UTF-8): Narzędzie do tworzenia nowoczesnych książek online z plików Markdown
Name: mdbook-linkcheck
Version: 0.7.7
-Release: 2
+Release: 3
License: MPL v2.0
Group: Applications/Text
#Source0Download: https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases
@@ -13,7 +13,8 @@ Source0: https://github.com/Michael-F-Bryan/mdbook-linkcheck/archive/v%{version}
# cd ..
# tar cJf mdbook-linkcheck-vendor-%{version}.tar.xz mdbook-linkcheck-%{version}/{vendor,Cargo.lock}
Source1: %{name}-vendor-%{version}.tar.xz
-# Source1-md5: b932d6b28dc2fb0e5938393c4ccebca0
+# Source1-md5: 6b0a3b5ae4ccdb38c9058f38e612c750
+Patch0: mdbook-0.5.patch
URL: https://github.com/Michael-F-Bryan/mdbook-linkcheck
BuildRequires: cargo
BuildRequires: openssl-devel >= 1.1.1
@@ -23,8 +24,7 @@ BuildRequires: rust
BuildRequires: tar >= 1:1.22
BuildRequires: xz
%{?rust_req}
-Requires: mdbook >= 0.4.0
-Requires: mdbook < 0.5
+Requires: mdbook >= 0.5.0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
@@ -36,6 +36,7 @@ Markdown.
%prep
%setup -q -b1
+%patch -P0 -p1
# use our offline registry
export CARGO_HOME="$(pwd)/.cargo"
diff --git a/mdbook-0.5.patch b/mdbook-0.5.patch
new file mode 100644
index 0000000..f64bf03
--- /dev/null
+++ b/mdbook-0.5.patch
@@ -0,0 +1,1918 @@
+From 89405c9c9237589c1c239e926524d05d61b12c6c Mon Sep 17 00:00:00 2001
+From: schilkp <schilk.philipp at gmail.com>
+Date: Thu, 4 Dec 2025 16:11:15 +0100
+Subject: [PATCH 1/2] Update to mdbook v0.5
+
+---
+ Cargo.lock | 923 ++++++++++++++++++++++------
+ Cargo.toml | 3 +-
+ src/bin/mdbook-linkcheck.rs | 7 +-
+ src/lib.rs | 26 +-
+ tests/absolute-links/book.toml | 1 -
+ tests/all-green/book.toml | 1 -
+ tests/broken-links/book.toml | 1 -
+ tests/external-links/book.toml | 1 -
+ tests/latex-support-links/book.toml | 1 -
+ tests/smoke_tests.rs | 6 +-
+ 10 files changed, 761 insertions(+), 209 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 22cca8c45..458504d90 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -1,6 +1,6 @@
+ # This file is automatically @generated by Cargo.
+ # It is not intended for manual editing.
+-version = 3
++version = 4
+
+ [[package]]
+ name = "adler"
+@@ -10,9 +10,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+ [[package]]
+ name = "aho-corasick"
+-version = "0.7.19"
++version = "1.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
++checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+ dependencies = [
+ "memchr",
+ ]
+@@ -46,9 +46,9 @@ dependencies = [
+
+ [[package]]
+ name = "anyhow"
+-version = "1.0.65"
++version = "1.0.100"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
++checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
+
+ [[package]]
+ name = "atty"
+@@ -88,6 +88,12 @@ version = "1.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
++[[package]]
++name = "bitflags"
++version = "2.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
++
+ [[package]]
+ name = "block-buffer"
+ version = "0.10.3"
+@@ -97,17 +103,6 @@ dependencies = [
+ "generic-array",
+ ]
+
+-[[package]]
+-name = "bstr"
+-version = "0.2.17"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+-dependencies = [
+- "lazy_static",
+- "memchr",
+- "regex-automata",
+-]
+-
+ [[package]]
+ name = "build-info"
+ version = "0.0.21"
+@@ -172,7 +167,7 @@ dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_json",
+- "syn",
++ "syn 1.0.101",
+ "xz2",
+ ]
+
+@@ -276,47 +271,13 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+ dependencies = [
+ "ansi_term 0.12.1",
+ "atty",
+- "bitflags",
++ "bitflags 1.3.2",
+ "strsim 0.8.0",
+- "textwrap 0.11.0",
++ "textwrap",
+ "unicode-width",
+ "vec_map",
+ ]
+
+-[[package]]
+-name = "clap"
+-version = "3.2.22"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
+-dependencies = [
+- "atty",
+- "bitflags",
+- "clap_lex",
+- "indexmap",
+- "once_cell",
+- "strsim 0.10.0",
+- "termcolor",
+- "textwrap 0.15.1",
+-]
+-
+-[[package]]
+-name = "clap_complete"
+-version = "3.2.5"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8"
+-dependencies = [
+- "clap 3.2.22",
+-]
+-
+-[[package]]
+-name = "clap_lex"
+-version = "0.2.4"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+-dependencies = [
+- "os_str_bytes",
+-]
+-
+ [[package]]
+ name = "codespan"
+ version = "0.11.1"
+@@ -395,7 +356,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb"
+ dependencies = [
+ "quote",
+- "syn",
++ "syn 1.0.101",
++]
++
++[[package]]
++name = "darling"
++version = "0.20.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
++dependencies = [
++ "darling_core",
++ "darling_macro",
++]
++
++[[package]]
++name = "darling_core"
++version = "0.20.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
++dependencies = [
++ "fnv",
++ "ident_case",
++ "proc-macro2",
++ "quote",
++ "strsim 0.11.1",
++ "syn 2.0.111",
++]
++
++[[package]]
++name = "darling_macro"
++version = "0.20.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
++dependencies = [
++ "darling_core",
++ "quote",
++ "syn 2.0.111",
++]
++
++[[package]]
++name = "derive_builder"
++version = "0.20.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
++dependencies = [
++ "derive_builder_macro",
++]
++
++[[package]]
++name = "derive_builder_core"
++version = "0.20.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
++dependencies = [
++ "darling",
++ "proc-macro2",
++ "quote",
++ "syn 2.0.111",
++]
++
++[[package]]
++name = "derive_builder_macro"
++version = "0.20.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
++dependencies = [
++ "derive_builder_core",
++ "syn 2.0.111",
+ ]
+
+ [[package]]
+@@ -408,7 +435,7 @@ dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc_version 0.4.0",
+- "syn",
++ "syn 1.0.101",
+ ]
+
+ [[package]]
+@@ -425,9 +452,9 @@ checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
+
+ [[package]]
+ name = "digest"
+-version = "0.10.5"
++version = "0.10.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
++checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+ dependencies = [
+ "block-buffer",
+ "crypto-common",
+@@ -439,6 +466,12 @@ version = "1.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541"
+
++[[package]]
++name = "ego-tree"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8"
++
+ [[package]]
+ name = "encoding_rs"
+ version = "0.8.31"
+@@ -475,14 +508,27 @@ dependencies = [
+ ]
+
+ [[package]]
+-name = "fastrand"
+-version = "1.8.0"
++name = "equivalent"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
++
++[[package]]
++name = "errno"
++version = "0.3.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
++checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+ dependencies = [
+- "instant",
++ "libc",
++ "windows-sys 0.61.2",
+ ]
+
++[[package]]
++name = "fastrand"
++version = "2.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
++
+ [[package]]
+ name = "flate2"
+ version = "1.0.24"
+@@ -499,6 +545,12 @@ version = "1.0.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
++[[package]]
++name = "font-awesome-as-a-crate"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "932dcfbd51320af5f27f1ba02d2e567dec332cac7d2c221ba45d8e767264c4dc"
++
+ [[package]]
+ name = "foreign-types"
+ version = "0.3.2"
+@@ -529,6 +581,16 @@ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "f7aea5a5909a74969507051a3b17adc84737e31a5f910559892aedce026f4d53"
+
++[[package]]
++name = "futf"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
++dependencies = [
++ "mac",
++ "new_debug_unreachable",
++]
++
+ [[package]]
+ name = "futures"
+ version = "0.3.24"
+@@ -585,7 +647,7 @@ checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ ]
+
+ [[package]]
+@@ -637,13 +699,25 @@ dependencies = [
+ "unicode-width",
+ ]
+
++[[package]]
++name = "getrandom"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "r-efi",
++ "wasip2",
++]
++
+ [[package]]
+ name = "git2"
+ version = "0.13.25"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "f29229cc1b24c0e6062f6e742aa3e256492a5323365e5ed3413599f8a5eff7d6"
+ dependencies = [
+- "bitflags",
++ "bitflags 1.3.2",
+ "libc",
+ "libgit2-sys",
+ "log",
+@@ -668,7 +742,7 @@ dependencies = [
+ "futures-sink",
+ "futures-util",
+ "http",
+- "indexmap",
++ "indexmap 1.9.1",
+ "slab",
+ "tokio",
+ "tokio-util",
+@@ -677,16 +751,18 @@ dependencies = [
+
+ [[package]]
+ name = "handlebars"
+-version = "4.3.4"
++version = "6.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "56b224eaa4987c03c30b251de7ef0c15a6a59f34222905850dbc3026dfb24d5f"
++checksum = "759e2d5aea3287cb1190c8ec394f42866cb5bf74fcbf213f354e3c856ea26098"
+ dependencies = [
++ "derive_builder",
+ "log",
++ "num-order",
+ "pest",
+ "pest_derive",
+ "serde",
+ "serde_json",
+- "thiserror",
++ "thiserror 2.0.17",
+ ]
+
+ [[package]]
+@@ -695,6 +771,12 @@ version = "0.12.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
++[[package]]
++name = "hashbrown"
++version = "0.16.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
++
+ [[package]]
+ name = "heck"
+ version = "0.3.3"
+@@ -713,6 +795,23 @@ dependencies = [
+ "libc",
+ ]
+
++[[package]]
++name = "hex"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
++
++[[package]]
++name = "html5ever"
++version = "0.35.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "55d958c2f74b664487a2035fe1dadb032c48718a03b63f3ab0b8537db8549ed4"
++dependencies = [
++ "log",
++ "markup5ever",
++ "match_token",
++]
++
+ [[package]]
+ name = "http"
+ version = "0.2.8"
+@@ -803,6 +902,12 @@ dependencies = [
+ "winapi",
+ ]
+
++[[package]]
++name = "ident_case"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
++
+ [[package]]
+ name = "idna"
+ version = "0.3.0"
+@@ -820,16 +925,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+ dependencies = [
+ "autocfg",
+- "hashbrown",
++ "hashbrown 0.12.3",
+ ]
+
+ [[package]]
+-name = "instant"
+-version = "0.1.12"
++name = "indexmap"
++version = "2.12.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
++checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
+ dependencies = [
+- "cfg-if",
++ "equivalent",
++ "hashbrown 0.16.1",
+ ]
+
+ [[package]]
+@@ -870,9 +976,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+ [[package]]
+ name = "libc"
+-version = "0.2.134"
++version = "0.2.178"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
++checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
+
+ [[package]]
+ name = "libgit2-sys"
+@@ -914,7 +1020,7 @@ dependencies = [
+ "pulldown-cmark 0.8.0",
+ "reqwest",
+ "serde",
+- "thiserror",
++ "thiserror 1.0.37",
+ "url",
+ ]
+
+@@ -927,6 +1033,21 @@ dependencies = [
+ "memchr",
+ ]
+
++[[package]]
++name = "linux-raw-sys"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
++
++[[package]]
++name = "lock_api"
++version = "0.4.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
++dependencies = [
++ "scopeguard",
++]
++
+ [[package]]
+ name = "log"
+ version = "0.4.17"
+@@ -948,29 +1069,93 @@ dependencies = [
+ ]
+
+ [[package]]
+-name = "mdbook"
+-version = "0.4.21"
++name = "mac"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
++
++[[package]]
++name = "markup5ever"
++version = "0.35.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "23f3e133c6d515528745ffd3b9f0c7d975ae039f0b6abb099f2168daa2afb4f9"
++checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3"
+ dependencies = [
+- "anyhow",
+- "chrono",
+- "clap 3.2.22",
+- "clap_complete",
+- "env_logger 0.9.1",
+- "handlebars",
+- "lazy_static",
+ "log",
+- "memchr",
+- "opener",
+- "pulldown-cmark 0.9.2",
++ "tendril",
++ "web_atoms",
++]
++
++[[package]]
++name = "match_token"
++version = "0.35.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.111",
++]
++
++[[package]]
++name = "mdbook-core"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2ef8430ec21b88489dfffd90c0fb9bd3eab96bf7642ef0cab74754b9d2e5b7f6"
++dependencies = [
++ "anyhow",
++ "regex",
++ "serde",
++ "serde_json",
++ "toml 0.9.8",
++ "tracing",
++]
++
++[[package]]
++name = "mdbook-driver"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "162700e33a89ac858d9bff47fa45bf85a60055c2bfcfa52449b5727e317a9dd5"
++dependencies = [
++ "anyhow",
++ "indexmap 2.12.1",
++ "mdbook-core",
++ "mdbook-html",
++ "mdbook-markdown",
++ "mdbook-preprocessor",
++ "mdbook-renderer",
++ "mdbook-summary",
+ "regex",
+ "serde",
+ "serde_json",
+ "shlex",
+ "tempfile",
+- "toml",
++ "toml 0.9.8",
+ "topological-sort",
++ "tracing",
++]
++
++[[package]]
++name = "mdbook-html"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "879080044b944c4e9138b7ee6b51ca139944790d88df1fa6dbe4f4621716f4bb"
++dependencies = [
++ "anyhow",
++ "ego-tree",
++ "font-awesome-as-a-crate",
++ "handlebars",
++ "hex",
++ "html5ever",
++ "indexmap 2.12.1",
++ "mdbook-core",
++ "mdbook-markdown",
++ "mdbook-renderer",
++ "pulldown-cmark 0.13.0",
++ "regex",
++ "serde",
++ "serde_json",
++ "sha2",
++ "tracing",
+ ]
+
+ [[package]]
+@@ -985,7 +1170,8 @@ dependencies = [
+ "http",
+ "linkcheck",
+ "log",
+- "mdbook",
++ "mdbook-driver",
++ "mdbook-renderer",
+ "pretty_assertions 1.3.0",
+ "pulldown-cmark 0.8.0",
+ "regex",
+@@ -996,14 +1182,63 @@ dependencies = [
+ "serde_json",
+ "structopt",
+ "tokio",
+- "toml",
++ "toml 0.5.9",
++]
++
++[[package]]
++name = "mdbook-markdown"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "27f58c1b5686d0add2b513c15401177f84e87742ec381ccd4bfc2216de9a52e8"
++dependencies = [
++ "pulldown-cmark 0.13.0",
++ "regex",
++ "tracing",
++]
++
++[[package]]
++name = "mdbook-preprocessor"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "01f84f2b2ef3ccf2c6dd71255f9d90912cce7d5a5aa32899d033003d2c71f84d"
++dependencies = [
++ "anyhow",
++ "mdbook-core",
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "mdbook-renderer"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c1791611e2118bc3521b83afbf24e5c973414807f8c1cb378b8fc8845c7fc70"
++dependencies = [
++ "anyhow",
++ "mdbook-core",
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "mdbook-summary"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6826680313837f89dfcccac07e87f0f47e168989da9bd005909d7b2230edaec0"
++dependencies = [
++ "anyhow",
++ "mdbook-core",
++ "memchr",
++ "pulldown-cmark 0.13.0",
++ "serde",
++ "tracing",
+ ]
+
+ [[package]]
+ name = "memchr"
+-version = "2.5.0"
++version = "2.7.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
++checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
+
+ [[package]]
+ name = "mime"
+@@ -1029,7 +1264,7 @@ dependencies = [
+ "libc",
+ "log",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+- "windows-sys",
++ "windows-sys 0.36.1",
+ ]
+
+ [[package]]
+@@ -1050,6 +1285,12 @@ dependencies = [
+ "tempfile",
+ ]
+
++[[package]]
++name = "new_debug_unreachable"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
++
+ [[package]]
+ name = "num-bigint"
+ version = "0.3.3"
+@@ -1071,6 +1312,21 @@ dependencies = [
+ "num-traits",
+ ]
+
++[[package]]
++name = "num-modular"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f"
++
++[[package]]
++name = "num-order"
++version = "1.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6"
++dependencies = [
++ "num-modular",
++]
++
+ [[package]]
+ name = "num-traits"
+ version = "0.2.15"
+@@ -1092,19 +1348,9 @@ dependencies = [
+
+ [[package]]
+ name = "once_cell"
+-version = "1.15.0"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+-
+-[[package]]
+-name = "opener"
+-version = "0.5.0"
++version = "1.21.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "4ea3ebcd72a54701f56345f16785a6d3ac2df7e986d273eb4395c0b01db17952"
+-dependencies = [
+- "bstr",
+- "winapi",
+-]
++checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+ [[package]]
+ name = "openssl"
+@@ -1112,7 +1358,7 @@ version = "0.10.42"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
+ dependencies = [
+- "bitflags",
++ "bitflags 1.3.2",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+@@ -1129,7 +1375,7 @@ checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ ]
+
+ [[package]]
+@@ -1161,12 +1407,6 @@ dependencies = [
+ "vcpkg",
+ ]
+
+-[[package]]
+-name = "os_str_bytes"
+-version = "6.3.0"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
+-
+ [[package]]
+ name = "output_vt100"
+ version = "0.1.3"
+@@ -1176,6 +1416,29 @@ dependencies = [
+ "winapi",
+ ]
+
++[[package]]
++name = "parking_lot"
++version = "0.12.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
++dependencies = [
++ "lock_api",
++ "parking_lot_core",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.9.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "redox_syscall",
++ "smallvec",
++ "windows-link",
++]
++
+ [[package]]
+ name = "percent-encoding"
+ version = "2.2.0"
+@@ -1188,7 +1451,7 @@ version = "2.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a"
+ dependencies = [
+- "thiserror",
++ "thiserror 1.0.37",
+ "ucd-trie",
+ ]
+
+@@ -1212,7 +1475,7 @@ dependencies = [
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ ]
+
+ [[package]]
+@@ -1226,6 +1489,44 @@ dependencies = [
+ "sha1",
+ ]
+
++[[package]]
++name = "phf"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
++dependencies = [
++ "phf_shared",
++]
++
++[[package]]
++name = "phf_codegen"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
++dependencies = [
++ "phf_generator",
++ "phf_shared",
++]
++
++[[package]]
++name = "phf_generator"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
++dependencies = [
++ "phf_shared",
++ "rand",
++]
++
++[[package]]
++name = "phf_shared"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
++dependencies = [
++ "siphasher",
++]
++
+ [[package]]
+ name = "pin-project-lite"
+ version = "0.2.9"
+@@ -1244,6 +1545,12 @@ version = "0.3.25"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
+
++[[package]]
++name = "precomputed-hash"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
++
+ [[package]]
+ name = "pretty_assertions"
+ version = "0.6.1"
+@@ -1277,7 +1584,7 @@ dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ "version_check",
+ ]
+
+@@ -1300,9 +1607,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+
+ [[package]]
+ name = "proc-macro2"
+-version = "1.0.46"
++version = "1.0.103"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
++checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
+ dependencies = [
+ "unicode-ident",
+ ]
+@@ -1313,7 +1620,7 @@ version = "0.8.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8"
+ dependencies = [
+- "bitflags",
++ "bitflags 1.3.2",
+ "getopts",
+ "memchr",
+ "unicase",
+@@ -1321,64 +1628,89 @@ dependencies = [
+
+ [[package]]
+ name = "pulldown-cmark"
+-version = "0.9.2"
++version = "0.13.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2d9cc634bc78768157b5cbfe988ffcd1dcba95cd2b2f03a88316c08c6d00ed63"
++checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"
+ dependencies = [
+- "bitflags",
++ "bitflags 2.10.0",
+ "memchr",
++ "pulldown-cmark-escape",
+ "unicase",
+ ]
+
++[[package]]
++name = "pulldown-cmark-escape"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"
++
+ [[package]]
+ name = "quote"
+-version = "1.0.21"
++version = "1.0.42"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
++checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
+ dependencies = [
+ "proc-macro2",
+ ]
+
++[[package]]
++name = "r-efi"
++version = "5.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
++
++[[package]]
++name = "rand"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
++dependencies = [
++ "rand_core",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
++
+ [[package]]
+ name = "redox_syscall"
+-version = "0.2.16"
++version = "0.5.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
++checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+ dependencies = [
+- "bitflags",
++ "bitflags 2.10.0",
+ ]
+
+ [[package]]
+ name = "regex"
+-version = "1.6.0"
++version = "1.12.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
++checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
+ dependencies = [
+ "aho-corasick",
+ "memchr",
++ "regex-automata",
+ "regex-syntax",
+ ]
+
+ [[package]]
+ name = "regex-automata"
+-version = "0.1.10"
++version = "0.4.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
++checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
++dependencies = [
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
++]
+
+ [[package]]
+ name = "regex-syntax"
+-version = "0.6.27"
++version = "0.8.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+-
+-[[package]]
+-name = "remove_dir_all"
+-version = "0.5.3"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+-dependencies = [
+- "winapi",
+-]
++checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
+
+ [[package]]
+ name = "reqwest"
+@@ -1435,6 +1767,19 @@ dependencies = [
+ "semver 1.0.14",
+ ]
+
++[[package]]
++name = "rustix"
++version = "1.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
++dependencies = [
++ "bitflags 2.10.0",
++ "errno",
++ "libc",
++ "linux-raw-sys",
++ "windows-sys 0.61.2",
++]
++
+ [[package]]
+ name = "ryu"
+ version = "1.0.11"
+@@ -1448,16 +1793,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
+ dependencies = [
+ "lazy_static",
+- "windows-sys",
++ "windows-sys 0.36.1",
+ ]
+
++[[package]]
++name = "scopeguard"
++version = "1.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
++
+ [[package]]
+ name = "security-framework"
+ version = "2.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
+ dependencies = [
+- "bitflags",
++ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+@@ -1501,33 +1852,54 @@ dependencies = [
+
+ [[package]]
+ name = "serde"
+-version = "1.0.145"
++version = "1.0.228"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
++checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
++dependencies = [
++ "serde_core",
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_core"
++version = "1.0.228"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+ dependencies = [
+ "serde_derive",
+ ]
+
+ [[package]]
+ name = "serde_derive"
+-version = "1.0.145"
++version = "1.0.228"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
++checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 2.0.111",
+ ]
+
+ [[package]]
+ name = "serde_json"
+-version = "1.0.85"
++version = "1.0.145"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
++checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
+ dependencies = [
+ "itoa",
++ "memchr",
+ "ryu",
+ "serde",
++ "serde_core",
++]
++
++[[package]]
++name = "serde_spanned"
++version = "1.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
++dependencies = [
++ "serde_core",
+ ]
+
+ [[package]]
+@@ -1553,11 +1925,28 @@ dependencies = [
+ "digest",
+ ]
+
++[[package]]
++name = "sha2"
++version = "0.10.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
++dependencies = [
++ "cfg-if",
++ "cpufeatures",
++ "digest",
++]
++
+ [[package]]
+ name = "shlex"
+-version = "1.1.0"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
++
++[[package]]
++name = "siphasher"
++version = "1.0.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
++checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
+ [[package]]
+ name = "slab"
+@@ -1568,6 +1957,12 @@ dependencies = [
+ "autocfg",
+ ]
+
++[[package]]
++name = "smallvec"
++version = "1.15.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
++
+ [[package]]
+ name = "socket2"
+ version = "0.4.7"
+@@ -1578,6 +1973,31 @@ dependencies = [
+ "winapi",
+ ]
+
++[[package]]
++name = "string_cache"
++version = "0.8.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
++dependencies = [
++ "new_debug_unreachable",
++ "parking_lot",
++ "phf_shared",
++ "precomputed-hash",
++ "serde",
++]
++
++[[package]]
++name = "string_cache_codegen"
++version = "0.5.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
++dependencies = [
++ "phf_generator",
++ "phf_shared",
++ "proc-macro2",
++ "quote",
++]
++
+ [[package]]
+ name = "strsim"
+ version = "0.8.0"
+@@ -1586,9 +2006,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+ [[package]]
+ name = "strsim"
+-version = "0.10.0"
++version = "0.11.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
++checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+ [[package]]
+ name = "structopt"
+@@ -1596,7 +2016,7 @@ version = "0.3.26"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+ dependencies = [
+- "clap 2.34.0",
++ "clap",
+ "lazy_static",
+ "structopt-derive",
+ ]
+@@ -1611,7 +2031,7 @@ dependencies = [
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ ]
+
+ [[package]]
+@@ -1625,18 +2045,39 @@ dependencies = [
+ "unicode-ident",
+ ]
+
++[[package]]
++name = "syn"
++version = "2.0.111"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
+ [[package]]
+ name = "tempfile"
+-version = "3.3.0"
++version = "3.23.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
++checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
+ dependencies = [
+- "cfg-if",
+ "fastrand",
+- "libc",
+- "redox_syscall",
+- "remove_dir_all",
+- "winapi",
++ "getrandom",
++ "once_cell",
++ "rustix",
++ "windows-sys 0.61.2",
++]
++
++[[package]]
++name = "tendril"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
++dependencies = [
++ "futf",
++ "mac",
++ "utf-8",
+ ]
+
+ [[package]]
+@@ -1658,18 +2099,21 @@ dependencies = [
+ ]
+
+ [[package]]
+-name = "textwrap"
+-version = "0.15.1"
++name = "thiserror"
++version = "1.0.37"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
++checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
++dependencies = [
++ "thiserror-impl 1.0.37",
++]
+
+ [[package]]
+ name = "thiserror"
+-version = "1.0.37"
++version = "2.0.17"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
++checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
+ dependencies = [
+- "thiserror-impl",
++ "thiserror-impl 2.0.17",
+ ]
+
+ [[package]]
+@@ -1680,7 +2124,18 @@ checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "2.0.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.111",
+ ]
+
+ [[package]]
+@@ -1759,11 +2214,50 @@ dependencies = [
+ "serde",
+ ]
+
++[[package]]
++name = "toml"
++version = "0.9.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
++dependencies = [
++ "indexmap 2.12.1",
++ "serde_core",
++ "serde_spanned",
++ "toml_datetime",
++ "toml_parser",
++ "toml_writer",
++ "winnow",
++]
++
++[[package]]
++name = "toml_datetime"
++version = "0.7.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
++dependencies = [
++ "serde_core",
++]
++
++[[package]]
++name = "toml_parser"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
++dependencies = [
++ "winnow",
++]
++
++[[package]]
++name = "toml_writer"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
++
+ [[package]]
+ name = "topological-sort"
+-version = "0.1.0"
++version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "aa7c7f42dea4b1b99439786f5633aeb9c14c1b53f75e282803c2ec2ad545873c"
++checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d"
+
+ [[package]]
+ name = "tower-service"
+@@ -1773,20 +2267,31 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+ [[package]]
+ name = "tracing"
+-version = "0.1.36"
++version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
++checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647"
+ dependencies = [
+- "cfg-if",
+ "pin-project-lite",
++ "tracing-attributes",
+ "tracing-core",
+ ]
+
++[[package]]
++name = "tracing-attributes"
++version = "0.1.31"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.111",
++]
++
+ [[package]]
+ name = "tracing-core"
+-version = "0.1.29"
++version = "0.1.35"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
++checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c"
+ dependencies = [
+ "once_cell",
+ ]
+@@ -1863,6 +2368,12 @@ dependencies = [
+ "serde",
+ ]
+
++[[package]]
++name = "utf-8"
++version = "0.7.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
++
+ [[package]]
+ name = "vcpkg"
+ version = "0.2.15"
+@@ -1903,6 +2414,15 @@ version = "0.11.0+wasi-snapshot-preview1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
++[[package]]
++name = "wasip2"
++version = "1.0.1+wasi-0.2.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
++dependencies = [
++ "wit-bindgen",
++]
++
+ [[package]]
+ name = "wasm-bindgen"
+ version = "0.2.83"
+@@ -1924,7 +2444,7 @@ dependencies = [
+ "once_cell",
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ "wasm-bindgen-shared",
+ ]
+
+@@ -1958,7 +2478,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+- "syn",
++ "syn 1.0.101",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+ ]
+@@ -1979,6 +2499,18 @@ dependencies = [
+ "wasm-bindgen",
+ ]
+
++[[package]]
++name = "web_atoms"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414"
++dependencies = [
++ "phf",
++ "phf_codegen",
++ "string_cache",
++ "string_cache_codegen",
++]
++
+ [[package]]
+ name = "winapi"
+ version = "0.3.9"
+@@ -2010,6 +2542,12 @@ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
++[[package]]
++name = "windows-link"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
++
+ [[package]]
+ name = "windows-sys"
+ version = "0.36.1"
+@@ -2023,6 +2561,15 @@ dependencies = [
+ "windows_x86_64_msvc",
+ ]
+
++[[package]]
++name = "windows-sys"
++version = "0.61.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
++dependencies = [
++ "windows-link",
++]
++
+ [[package]]
+ name = "windows_aarch64_msvc"
+ version = "0.36.1"
+@@ -2053,6 +2600,12 @@ version = "0.36.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+
++[[package]]
++name = "winnow"
++version = "0.7.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
++
+ [[package]]
+ name = "winreg"
+ version = "0.10.1"
+@@ -2062,6 +2615,12 @@ dependencies = [
+ "winapi",
+ ]
+
++[[package]]
++name = "wit-bindgen"
++version = "0.46.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
++
+ [[package]]
+ name = "xtask"
+ version = "0.1.0"
+@@ -2101,6 +2660,6 @@ dependencies = [
+ "bzip2",
+ "crc32fast",
+ "flate2",
+- "thiserror",
++ "thiserror 1.0.37",
+ "time",
+ ]
+diff --git a/Cargo.toml b/Cargo.toml
+index 024f55df4..4af50376d 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -23,7 +23,8 @@ env_logger = "0.9"
+ http = "0.2"
+ linkcheck = "0.4"
+ log = "0.4"
+-mdbook = { version = "0.4", default-features = false }
++mdbook-driver = { version = "0.5", default-features = false }
++mdbook-renderer = { version = "0.5", default-features = false }
+ pulldown-cmark = "0.8.0"
+ regex = "1.0"
+ reqwest = { version = "0.11", default-features = false, features = ["native-tls-vendored"]}
+diff --git a/src/bin/mdbook-linkcheck.rs b/src/bin/mdbook-linkcheck.rs
+index 0582b54ed..abd93c889 100644
+--- a/src/bin/mdbook-linkcheck.rs
++++ b/src/bin/mdbook-linkcheck.rs
+@@ -1,6 +1,7 @@
+ use anyhow::{Context, Error};
+ use codespan_reporting::term::termcolor::ColorChoice;
+-use mdbook::{renderer::RenderContext, MDBook};
++use mdbook_driver::MDBook;
++use mdbook_renderer::RenderContext;
+ use std::{io, path::PathBuf};
+ use structopt::StructOpt;
+
+@@ -76,14 +77,14 @@ fn parse_colour(raw: &str) -> Result<ColorChoice, Error> {
+ }
+ }
+
+-fn to_sync(err: mdbook::errors::Error) -> Error {
++fn to_sync(err: mdbook_renderer::errors::Error) -> Error {
+ use std::{
+ fmt::{self, Display, Formatter},
+ sync::Mutex,
+ };
+
+ #[derive(Debug)]
+- struct Synchronised(Mutex<mdbook::errors::Error>);
++ struct Synchronised(Mutex<mdbook_renderer::errors::Error>);
+
+ impl Display for Synchronised {
+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+diff --git a/src/lib.rs b/src/lib.rs
+index 3cef84a83..957e39881 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -23,7 +23,7 @@
+ extern crate pretty_assertions;
+
+ /// A semver range specifying which versions of `mdbook` this crate supports.
+-pub const COMPATIBLE_MDBOOK_VERSIONS: &str = "^0.4.0";
++pub const COMPATIBLE_MDBOOK_VERSIONS: &str = "^0.5.0";
+
+ mod config;
+ mod context;
+@@ -47,9 +47,9 @@ use codespan_reporting::{
+ term::termcolor::{ColorChoice, StandardStream},
+ };
+ use linkcheck::validation::Cache;
+-use mdbook::{
++use mdbook_renderer::{
+ book::{Book, BookItem},
+- renderer::RenderContext,
++ RenderContext,
+ };
+ use semver::{Version, VersionReq};
+ use std::{fs::File, path::Path};
+@@ -76,7 +76,7 @@ pub fn run(
+ log::info!("Started the link checker");
+ log::debug!("Selected file: {:?}", selected_files);
+
+- let cfg = crate::get_config(&ctx.config)?;
++ let cfg = crate::get_config(ctx)?;
+ crate::version_check(&ctx.version)?;
+
+ if log::log_enabled!(log::Level::Trace) {
+@@ -111,15 +111,13 @@ pub fn run(
+ }
+
+ /// Get the configuration used by `mdbook-linkcheck`.
+-pub fn get_config(cfg: &mdbook::Config) -> Result<Config, Error> {
+- match cfg.get("output.linkcheck") {
+- Some(raw) => raw
+- .clone()
+- .try_into()
+- .context("Unable to deserialize the `output.linkcheck` table.")
+- .map_err(Error::from),
+- None => Ok(Config::default()),
+- }
++pub fn get_config(ctx: &RenderContext) -> Result<Config, Error> {
++ let cfg: Config = ctx
++ .config
++ .get("output.linkcheck")
++ .context("Unable to deserialize the `output.linkcheck` table.")?
++ .unwrap_or_default();
++ Ok(cfg)
+ }
+
+ /// Check whether this library is compatible with the provided version string.
+@@ -262,7 +260,7 @@ mod tests {
+
+ #[test]
+ fn always_stay_compatible_with_mdbook_dependency() {
+- let got = version_check(mdbook::MDBOOK_VERSION);
++ let got = version_check(mdbook_renderer::MDBOOK_VERSION);
+
+ assert!(
+ got.is_ok(),
+diff --git a/tests/absolute-links/book.toml b/tests/absolute-links/book.toml
+index 2d4a2bb7f..0bc7d86ae 100644
+--- a/tests/absolute-links/book.toml
++++ b/tests/absolute-links/book.toml
+@@ -1,6 +1,5 @@
+ [book]
+ authors = ["Michael-F-Bryan"]
+ language = "en"
+-multilingual = false
+ src = "src"
+ title = "Absolute Links Fixture"
+diff --git a/tests/all-green/book.toml b/tests/all-green/book.toml
+index cba2d7591..f6ca933f8 100644
+--- a/tests/all-green/book.toml
++++ b/tests/all-green/book.toml
+@@ -1,6 +1,5 @@
+ [book]
+ authors = ["Michael Bryan"]
+-multilingual = false
+ src = "src"
+ title = "All Green"
+
+diff --git a/tests/broken-links/book.toml b/tests/broken-links/book.toml
+index 7200c8d0f..61a933724 100644
+--- a/tests/broken-links/book.toml
++++ b/tests/broken-links/book.toml
+@@ -1,5 +1,4 @@
+ [book]
+ authors = ["Michael Bryan"]
+-multilingual = false
+ src = "src"
+ title = "Broken Links"
+diff --git a/tests/external-links/book.toml b/tests/external-links/book.toml
+index 4daf8fc51..9f0a34d9a 100644
+--- a/tests/external-links/book.toml
++++ b/tests/external-links/book.toml
+@@ -1,6 +1,5 @@
+ [book]
+ authors = ["Michael Bryan"]
+-multilingual = false
+ src = "src"
+ title = "External links"
+
+diff --git a/tests/smoke_tests.rs b/tests/smoke_tests.rs
+index 6dda5bbe9..0c43e5395 100644
+--- a/tests/smoke_tests.rs
++++ b/tests/smoke_tests.rs
+@@ -4,8 +4,9 @@ extern crate pretty_assertions;
+ use anyhow::Error;
+ use codespan::{FileId, Files};
+ use linkcheck::validation::{Cache, Reason};
+-use mdbook::{renderer::{RenderContext, Renderer}, MDBook};
++use mdbook_driver::MDBook;
+ use mdbook_linkcheck::{Config, HashedRegex, ValidationOutcome, WarningPolicy};
++use mdbook_renderer::{RenderContext, Renderer};
+ use std::{cell::Cell, collections::HashMap, convert::TryInto, iter::FromIterator, path::{Path, PathBuf}};
+
+ fn test_dir() -> PathBuf { Path::new(env!("CARGO_MANIFEST_DIR")).join("tests") }
+
+From ed981be6ded11562e604fff290ae4c08f1c419c5 Mon Sep 17 00:00:00 2001
+From: schilkp <schilk.philipp at gmail.com>
+Date: Thu, 4 Dec 2025 16:17:49 +0100
+Subject: [PATCH 2/2] Fix various lints.
+
+---
+ src/config.rs | 17 ++++++++++-------
+ src/context.rs | 11 +++--------
+ src/lib.rs | 4 ++--
+ src/validate.rs | 15 ++++++---------
+ 4 files changed, 21 insertions(+), 26 deletions(-)
+
+diff --git a/src/config.rs b/src/config.rs
+index 73e969b1b..0727731e7 100644
+--- a/src/config.rs
++++ b/src/config.rs
+@@ -1,9 +1,13 @@
++// False positive: HashedRegex is safe as HashMap key (Hash/Eq based on string, not interior mutability)
++// Locally disabling this lint below, unfortunately, does not work.
++#![allow(clippy::mutable_key_type)]
++
+ use crate::hashed_regex::HashedRegex;
+ use anyhow::Error;
+ use http::header::{HeaderName, HeaderValue};
+ use log::Level;
+ use reqwest::Client;
+-use serde_derive::{Deserialize, Serialize};
++use serde::{Deserialize, Serialize};
+ use std::{
+ collections::HashMap,
+ convert::TryFrom,
+@@ -173,9 +177,9 @@ impl TryFrom<String> for HttpHeader {
+ }
+ }
+
+-impl Into<String> for HttpHeader {
+- fn into(self) -> String {
+- let HttpHeader { name, value, .. } = self;
++impl From<HttpHeader> for String {
++ fn from(val: HttpHeader) -> Self {
++ let HttpHeader { name, value, .. } = val;
+ format!("{}: {}", name, value)
+ }
+ }
+@@ -252,10 +256,12 @@ fn interpolate_env(value: &str) -> Result<HeaderValue, Error> {
+ /// How should warnings be treated?
+ #[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)]
+ #[serde(rename_all = "kebab-case")]
++#[derive(Default)]
+ pub enum WarningPolicy {
+ /// Silently ignore them.
+ Ignore,
+ /// Warn the user, but don't fail the linkcheck.
++ #[default]
+ Warn,
+ /// Treat warnings as errors.
+ Error,
+@@ -271,9 +277,6 @@ impl WarningPolicy {
+ }
+ }
+
+-impl Default for WarningPolicy {
+- fn default() -> WarningPolicy { WarningPolicy::Warn }
+-}
+
+ #[cfg(test)]
+ mod tests {
+diff --git a/src/context.rs b/src/context.rs
+index ba7140499..29da081a9 100644
+--- a/src/context.rs
++++ b/src/context.rs
+@@ -1,5 +1,4 @@
+ use crate::{Config, HashedRegex};
+-use codespan::Files;
+ use http::header::{HeaderMap, HeaderName, HeaderValue};
+ use linkcheck::{
+ validation::{Cache, Options},
+@@ -7,7 +6,6 @@ use linkcheck::{
+ };
+ use reqwest::{Client, Url};
+ use std::{
+- path::Path,
+ sync::{Mutex, MutexGuard},
+ };
+
+@@ -15,9 +13,7 @@ use std::{
+ #[derive(Debug)]
+ pub struct Context<'a> {
+ pub(crate) cfg: &'a Config,
+- pub(crate) src_dir: &'a Path,
+ pub(crate) cache: Mutex<Cache>,
+- pub(crate) files: &'a Files<String>,
+ pub(crate) client: Client,
+ pub(crate) filesystem_options: Options,
+ pub(crate) interpolated_headers:
+@@ -29,16 +25,15 @@ impl<'a> linkcheck::validation::Context for Context<'a> {
+
+ fn filesystem_options(&self) -> &Options { &self.filesystem_options }
+
+- fn cache(&self) -> Option<MutexGuard<Cache>> {
++ fn cache(&self) -> Option<MutexGuard<'_, Cache>> {
+ Some(self.cache.lock().expect("Lock was poisoned"))
+ }
+
+ fn should_ignore(&self, link: &Link) -> bool {
+- if !self.cfg.follow_web_links {
+- if let Ok(_) = link.href.parse::<Url>() {
++ if !self.cfg.follow_web_links
++ && link.href.parse::<Url>().is_ok() {
+ return true;
+ }
+- }
+
+ self.cfg
+ .exclude
+diff --git a/src/lib.rs b/src/lib.rs
+index 957e39881..fa99a8a18 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -93,7 +93,7 @@ pub fn run(
+ }
+ };
+
+- let (files, outcome) = check_links(&ctx, &mut cache, &cfg, file_filter)?;
++ let (files, outcome) = check_links(ctx, &mut cache, &cfg, file_filter)?;
+ let diags = outcome.generate_diagnostics(&files, cfg.warning_policy);
+ report_errors(&files, &diags, colour)?;
+
+@@ -206,7 +206,7 @@ where
+ .context("Unable to resolve the source directory")?;
+ let outcome = crate::validate(
+ &links,
+- &cfg,
++ cfg,
+ &src,
+ cache,
+ &files,
+diff --git a/src/validate.rs b/src/validate.rs
+index 71789b516..994289efc 100644
+--- a/src/validate.rs
++++ b/src/validate.rs
+@@ -49,9 +49,7 @@ fn lc_validate(
+ client: cfg.client(),
+ filesystem_options: options,
+ cfg,
+- src_dir,
+ cache: Mutex::new(cache.clone()),
+- files,
+ interpolated_headers,
+ };
+ let links = collate_links(links, src_dir, files);
+@@ -111,10 +109,9 @@ fn ensure_included_in_book(
+ if was_included_in_summary || !is_markdown {
+ Ok(())
+ } else {
+- use std::io::{Error, ErrorKind};
++ use std::io::Error;
+
+- Err(Reason::Io(Error::new(
+- ErrorKind::Other,
++ Err(Reason::Io(Error::other(
+ NotInSummary {
+ path: resolved_link.to_path_buf(),
+ },
+@@ -281,7 +278,7 @@ impl ValidationOutcome {
+ ) {
+ for broken_link in &self.invalid_links {
+ let link = &broken_link.link;
+- let msg = most_specific_error_message(&broken_link);
++ let msg = most_specific_error_message(broken_link);
+ let diag = Diagnostic::error()
+ .with_message(msg.clone())
+ .with_labels(vec![
+@@ -300,7 +297,7 @@ impl ValidationOutcome {
+ diags: &mut Vec<Diagnostic<FileId>>,
+ files: &Files<String>,
+ ) {
+- const WARNING_MESSAGE: &'static str = r#"When viewing a document directly from the file system and click on an
++ const WARNING_MESSAGE: &str = r#"When viewing a document directly from the file system and click on an
+ absolute link (e.g. `/index.md`), the browser will try to navigate to
+ `/index.md` on the current file system (i.e. the `index.md` file inside
+ `/` or `C:\`) instead of the `index.md` file at book's base directory as
+@@ -392,8 +389,8 @@ where
+ },
+ (None, _) => comps.push(Component::ParentDir),
+ (Some(a), Some(b)) if comps.is_empty() && a == b => (),
+- (Some(a), Some(b)) if b == Component::CurDir => comps.push(a),
+- (Some(_), Some(b)) if b == Component::ParentDir => return None,
++ (Some(a), Some(Component::CurDir)) => comps.push(a),
++ (Some(_), Some(Component::ParentDir)) => return None,
+ (Some(a), Some(_)) => {
+ comps.push(Component::ParentDir);
+ for _ in itb {
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mdbook-linkcheck.git/commitdiff/364702c903539f2930bdfc1ed1dd27529863dfe7
More information about the pld-cvs-commit
mailing list