diff options
| author | André Luis Leal Cardoso Junior <andrehjr@gmail.com> | 2019-04-07 09:59:33 -0300 |
|---|---|---|
| committer | André Luis Leal Cardoso Junior <andrehjr@gmail.com> | 2019-07-06 11:05:22 -0300 |
| commit | f80697215fb1596ea6ccdbace46050fea661bffe (patch) | |
| tree | f59aac0d48490f1f2388a681ad135797c6769512 /src/tools/rustbook | |
| parent | d8a6ccfb4a1e41978fcf98b8cf03146b8b0264f3 (diff) | |
Add linkcheck command to rustbook tool
Diffstat (limited to 'src/tools/rustbook')
| -rw-r--r-- | src/tools/rustbook/Cargo.toml | 2 | ||||
| -rw-r--r-- | src/tools/rustbook/src/main.rs | 35 |
2 files changed, 35 insertions, 2 deletions
diff --git a/src/tools/rustbook/Cargo.toml b/src/tools/rustbook/Cargo.toml index 54549e4c7e9..0805dc74f8d 100644 --- a/src/tools/rustbook/Cargo.toml +++ b/src/tools/rustbook/Cargo.toml @@ -7,6 +7,8 @@ edition = "2018" [dependencies] clap = "2.25.0" +mdbook-linkcheck = "0.3.0" +failure = "0.1" [dependencies.mdbook] version = "0.3.0" diff --git a/src/tools/rustbook/src/main.rs b/src/tools/rustbook/src/main.rs index 04e48dde86b..ecba45058e2 100644 --- a/src/tools/rustbook/src/main.rs +++ b/src/tools/rustbook/src/main.rs @@ -11,7 +11,13 @@ use mdbook_1::{MDBook as MDBook1}; use mdbook_1::errors::{Result as Result1}; use mdbook::MDBook; -use mdbook::errors::Result; +use mdbook::errors::{Result as Result3}; +use mdbook::renderer::RenderContext; + +use mdbook_linkcheck; +use mdbook_linkcheck::errors::BrokenLinks; +use failure::Error; + fn main() { let d_message = "-d, --dest-dir=[dest-dir] @@ -31,6 +37,9 @@ fn main() { .arg_from_usage(d_message) .arg_from_usage(dir_message) .arg_from_usage(vers_message)) + .subcommand(SubCommand::with_name("linkcheck") + .about("Run linkcheck with mdBook 3") + .arg_from_usage(dir_message)) .get_matches(); // Check which subcomamnd the user ran... @@ -64,10 +73,32 @@ fn main() { } }; }, + ("linkcheck", Some(sub_matches)) => { + if let Err(err) = linkcheck(sub_matches) { + eprintln!("Error: {}", err); + + if let Ok(broken_links) = err.downcast::<BrokenLinks>() { + for cause in broken_links.links().iter() { + eprintln!("\tCaused By: {}", cause); + } + } + + ::std::process::exit(101); + } + }, (_, _) => unreachable!(), }; } +pub fn linkcheck(args: &ArgMatches<'_>) -> Result<(), Error> { + let book_dir = get_book_dir(args); + let book = MDBook::load(&book_dir).unwrap(); + let cfg = book.config; + let render_ctx = RenderContext::new(&book_dir, book.book, cfg, &book_dir); + + mdbook_linkcheck::check_links(&render_ctx) +} + // Build command implementation pub fn build_1(args: &ArgMatches<'_>) -> Result1<()> { let book_dir = get_book_dir(args); @@ -86,7 +117,7 @@ pub fn build_1(args: &ArgMatches<'_>) -> Result1<()> { } // Build command implementation -pub fn build(args: &ArgMatches<'_>) -> Result<()> { +pub fn build(args: &ArgMatches<'_>) -> Result3<()> { let book_dir = get_book_dir(args); let mut book = MDBook::load(&book_dir)?; |
