Add linkcheck command to rustbook tool
This commit is contained in:
parent
d8a6ccfb4a
commit
f80697215f
4 changed files with 420 additions and 30 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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)?;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue