add init flags

add init flags

update init command in guide
This commit is contained in:
josh rotenberg 2021-05-31 19:43:15 -07:00
parent 22ea5fe335
commit e5e10c681a
2 changed files with 42 additions and 6 deletions

View File

@ -52,3 +52,19 @@ directory called `theme` in your source directory so that you can modify it.
The theme is selectively overwritten, this means that if you don't want to The theme is selectively overwritten, this means that if you don't want to
overwrite a specific file, just delete it and the default file will be used. overwrite a specific file, just delete it and the default file will be used.
#### --title
Specify a title for the book. If not supplied, an interactive prompt will ask for
a title.
```bash
mdbook init --title="my amazing book"
```
#### --gitignore
Create a `.gitignore` file configured to ignore the `book` directory created when [building] a book.
If not supplied, an interactive prompt will ask whether it should be created.
[building]: build.md

View File

@ -1,5 +1,5 @@
use crate::get_book_dir; use crate::get_book_dir;
use clap::{App, ArgMatches, SubCommand}; use clap::{App, Arg, ArgMatches, SubCommand};
use mdbook::config; use mdbook::config;
use mdbook::errors::Result; use mdbook::errors::Result;
use mdbook::MDBook; use mdbook::MDBook;
@ -18,6 +18,20 @@ pub fn make_subcommand<'a, 'b>() -> App<'a, 'b> {
) )
.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 'Skips confirmation prompts'") .arg_from_usage("--force 'Skips confirmation prompts'")
.arg(
Arg::with_name("title")
.short("t")
.long("title")
.takes_value(true)
.help("Sets the book title")
.required(false),
)
.arg(
Arg::with_name("gitignore")
.short("g")
.long("gitignore")
.help("Creates a .gitignore"),
)
} }
// Init command implementation // Init command implementation
@ -25,7 +39,6 @@ pub fn execute(args: &ArgMatches) -> Result<()> {
let book_dir = get_book_dir(args); let book_dir = get_book_dir(args);
let mut builder = MDBook::init(&book_dir); let mut builder = MDBook::init(&book_dir);
let mut config = config::Config::default(); let mut config = config::Config::default();
// 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") {
let theme_dir = book_dir.join("theme"); let theme_dir = book_dir.join("theme");
@ -45,13 +58,20 @@ pub fn execute(args: &ArgMatches) -> Result<()> {
} }
} }
if args.is_present("gitignore") {
builder.create_gitignore(true);
} else {
println!("\nDo you want a .gitignore to be created? (y/n)"); println!("\nDo you want a .gitignore to be created? (y/n)");
if confirm() { if confirm() {
builder.create_gitignore(true); builder.create_gitignore(true);
} }
}
config.book.title = request_book_title(); config.book.title = if args.is_present("title") {
args.value_of("title").map(String::from)
} else {
request_book_title()
};
if let Some(author) = get_author_name() { if let Some(author) = get_author_name() {
debug!("Obtained user name from gitconfig: {:?}", author); debug!("Obtained user name from gitconfig: {:?}", author);