implement `clean` subcommand (#583)
This commit is contained in:
parent
43fcd00cd5
commit
0bc1030a02
|
@ -0,0 +1,30 @@
|
||||||
|
use std::fs;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use clap::{App, ArgMatches, SubCommand};
|
||||||
|
use mdbook::MDBook;
|
||||||
|
use mdbook::errors::*;
|
||||||
|
use get_book_dir;
|
||||||
|
|
||||||
|
// Create clap subcommand arguments
|
||||||
|
pub fn make_subcommand<'a, 'b>() -> App<'a, 'b> {
|
||||||
|
SubCommand::with_name("clean")
|
||||||
|
.about("Delete built book")
|
||||||
|
.arg_from_usage(
|
||||||
|
"-d, --dest-dir=[dest-dir] 'The directory of built book{n}(Defaults to ./book when \
|
||||||
|
omitted)'",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean command implementation
|
||||||
|
pub fn execute(args: &ArgMatches) -> ::mdbook::errors::Result<()> {
|
||||||
|
let book_dir = get_book_dir(args);
|
||||||
|
let book = MDBook::load(&book_dir)?;
|
||||||
|
|
||||||
|
let dir_to_remove = match args.value_of("dest-dir") {
|
||||||
|
Some(dest_dir) => PathBuf::from(dest_dir),
|
||||||
|
None => book.root.join(&book.config.build.build_dir),
|
||||||
|
};
|
||||||
|
fs::remove_dir_all(&dir_to_remove).chain_err(|| "Unable to remove the build directory")?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ use env_logger::Builder;
|
||||||
use mdbook::utils;
|
use mdbook::utils;
|
||||||
|
|
||||||
pub mod build;
|
pub mod build;
|
||||||
|
pub mod clean;
|
||||||
pub mod init;
|
pub mod init;
|
||||||
pub mod test;
|
pub mod test;
|
||||||
#[cfg(feature = "serve")]
|
#[cfg(feature = "serve")]
|
||||||
|
@ -44,7 +45,8 @@ fn main() {
|
||||||
at: https://github.com/rust-lang-nursery/mdBook")
|
at: https://github.com/rust-lang-nursery/mdBook")
|
||||||
.subcommand(init::make_subcommand())
|
.subcommand(init::make_subcommand())
|
||||||
.subcommand(build::make_subcommand())
|
.subcommand(build::make_subcommand())
|
||||||
.subcommand(test::make_subcommand());
|
.subcommand(test::make_subcommand())
|
||||||
|
.subcommand(clean::make_subcommand());
|
||||||
|
|
||||||
#[cfg(feature = "watch")]
|
#[cfg(feature = "watch")]
|
||||||
let app = app.subcommand(watch::make_subcommand());
|
let app = app.subcommand(watch::make_subcommand());
|
||||||
|
@ -55,6 +57,7 @@ fn main() {
|
||||||
let res = match app.get_matches().subcommand() {
|
let res = match app.get_matches().subcommand() {
|
||||||
("init", Some(sub_matches)) => init::execute(sub_matches),
|
("init", Some(sub_matches)) => init::execute(sub_matches),
|
||||||
("build", Some(sub_matches)) => build::execute(sub_matches),
|
("build", Some(sub_matches)) => build::execute(sub_matches),
|
||||||
|
("clean", Some(sub_matches)) => clean::execute(sub_matches),
|
||||||
#[cfg(feature = "watch")]
|
#[cfg(feature = "watch")]
|
||||||
("watch", Some(sub_matches)) => watch::execute(sub_matches),
|
("watch", Some(sub_matches)) => watch::execute(sub_matches),
|
||||||
#[cfg(feature = "serve")]
|
#[cfg(feature = "serve")]
|
||||||
|
|
Loading…
Reference in New Issue