mirror of
https://github.com/rust-lang/mdBook
synced 2024-12-13 22:32:35 +00:00
Added user prompting and a --force argument. Closes #35
This commit is contained in:
parent
835c61c7f3
commit
5b487a03fc
1 changed files with 25 additions and 9 deletions
|
@ -26,7 +26,8 @@ fn main() {
|
||||||
.about("Create boilerplate structure and files in the directory")
|
.about("Create boilerplate structure and files in the directory")
|
||||||
// the {n} denotes a newline which will properly aligned in all help messages
|
// the {n} denotes a newline which will properly aligned in all help messages
|
||||||
.arg_from_usage("[dir] 'A directory for your book{n}(Defaults to Current Directory when ommitted)'")
|
.arg_from_usage("[dir] 'A directory for your book{n}(Defaults to Current Directory when ommitted)'")
|
||||||
.arg_from_usage("--theme 'Copies the default theme into your source folder'"))
|
.arg_from_usage("--theme 'Copies the default theme into your source folder'")
|
||||||
|
.arg_from_usage("--force 'skip confirmation prompts'"))
|
||||||
.subcommand(SubCommand::with_name("build")
|
.subcommand(SubCommand::with_name("build")
|
||||||
.about("Build the book from the markdown files")
|
.about("Build the book from the markdown files")
|
||||||
.arg_from_usage("[dir] 'A directory for your book{n}(Defaults to Current Directory when ommitted)'"))
|
.arg_from_usage("[dir] 'A directory for your book{n}(Defaults to Current Directory when ommitted)'"))
|
||||||
|
@ -47,6 +48,16 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn confirm() -> bool {
|
||||||
|
io::stdout().flush().unwrap();
|
||||||
|
let mut s = String::new();
|
||||||
|
io::stdin().read_line(&mut s).ok();
|
||||||
|
match &*s.trim() {
|
||||||
|
"Y" | "y" | "yes" | "Yes" => true,
|
||||||
|
_ => false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn init(args: &ArgMatches) -> Result<(), Box<Error>> {
|
fn init(args: &ArgMatches) -> Result<(), Box<Error>> {
|
||||||
|
|
||||||
let book_dir = get_book_dir(args);
|
let book_dir = get_book_dir(args);
|
||||||
|
@ -58,18 +69,23 @@ fn init(args: &ArgMatches) -> Result<(), Box<Error>> {
|
||||||
// If flag `--theme` is present, copy theme to src
|
// If flag `--theme` is present, copy theme to src
|
||||||
if args.is_present("theme") {
|
if args.is_present("theme") {
|
||||||
|
|
||||||
// Print warning
|
// Skip this id `--force` is present
|
||||||
print!("\nCopying the default theme to {:?}", book.get_src());
|
if !args.is_present("force") {
|
||||||
println!("could potentially overwrite files already present in that directory.");
|
// Print warning
|
||||||
print!("\nAre you sure you want to continue? (y/n) ");
|
print!("\nCopying the default theme to {:?}", book.get_src());
|
||||||
|
println!("could potentially overwrite files already present in that directory.");
|
||||||
|
print!("\nAre you sure you want to continue? (y/n) ");
|
||||||
|
|
||||||
// Read answer from user
|
// Read answer from user and exit if it's not 'yes'
|
||||||
|
if !confirm() {
|
||||||
// Joke while I don't read user response, has to be deleted when merged into master !!!
|
println!("\nexiting...\n");
|
||||||
println!("\n\nI am doing it anyways... (at the moment)");
|
::std::process::exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Call the function that copies the theme
|
// Call the function that copies the theme
|
||||||
try!(book.copy_theme());
|
try!(book.copy_theme());
|
||||||
|
println!("\nTheme copied.");
|
||||||
|
|
||||||
println!("");
|
println!("");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue