Add --no-git flag to gen book

Skip generating the changelog for the book when `--no-git` is passed to
`gen book` or `gen all`.

type: added
This commit is contained in:
Casey Rodarmor 2020-06-24 03:32:48 -07:00
parent 5951139fdf
commit 04b58464c9
No known key found for this signature in database
GPG Key ID: 556186B153EC6FE0
3 changed files with 24 additions and 10 deletions

View File

@ -12,7 +12,14 @@ pub(crate) enum Subcommand {
no_git: bool, no_git: bool,
}, },
#[structopt(about("Generate book"))] #[structopt(about("Generate book"))]
Book, Book {
#[structopt(
long = "no-git",
help = "Skip book contents require a Git repository. Currently this only includes the \
changelog."
)]
no_git: bool,
},
#[structopt(about("Generate the changelog"))] #[structopt(about("Generate the changelog"))]
Changelog, Changelog,
#[structopt(about("Print a commit template to standard output"))] #[structopt(about("Print a commit template to standard output"))]
@ -77,7 +84,7 @@ impl Subcommand {
} }
Self::CompletionScripts => Self::completion_scripts(&project)?, Self::CompletionScripts => Self::completion_scripts(&project)?,
Self::Readme => Self::readme(&project)?, Self::Readme => Self::readme(&project)?,
Self::Book => Self::book(&project)?, Self::Book { no_git } => Self::book(&project, no_git)?,
Self::Man => Self::man(&project)?, Self::Man => Self::man(&project)?,
Self::Diff => Self::diff(&project)?, Self::Diff => Self::diff(&project)?,
Self::All { no_git } => Self::all(&project, no_git)?, Self::All { no_git } => Self::all(&project, no_git)?,
@ -91,7 +98,7 @@ impl Subcommand {
} }
Self::completion_scripts(&project)?; Self::completion_scripts(&project)?;
Self::readme(&project)?; Self::readme(&project)?;
Self::book(&project)?; Self::book(&project, no_git)?;
Self::man(&project)?; Self::man(&project)?;
} }
@ -188,7 +195,7 @@ impl Subcommand {
} }
#[throws] #[throws]
pub(crate) fn book(project: &Project) { pub(crate) fn book(project: &Project, no_git: bool) {
info!("Generating book…"); info!("Generating book…");
let gen = project.gen()?; let gen = project.gen()?;
@ -221,15 +228,18 @@ impl Subcommand {
Faq::new(&project.config.faq).render_to(out.join("faq.md"))?; Faq::new(&project.config.faq).render_to(out.join("faq.md"))?;
Summary::new(project).render_to(out.join("SUMMARY.md"))?;
Introduction::new(&project.config).render_to(out.join("introduction.md"))?; Introduction::new(&project.config).render_to(out.join("introduction.md"))?;
let changelog = Changelog::new(&project)?; let include_changelog = !no_git;
Summary::new(project, include_changelog).render_to(out.join("SUMMARY.md"))?;
if !no_git {
let changelog = Changelog::new(&project)?;
let dst = out.join("changelog.md"); let dst = out.join("changelog.md");
fs::write(&dst, changelog.render(true)?).context(error::Filesystem { path: dst })?; fs::write(&dst, changelog.render(true)?).context(error::Filesystem { path: dst })?;
} }
}
#[throws] #[throws]
pub(crate) fn man(project: &Project) { pub(crate) fn man(project: &Project) {

View File

@ -5,10 +5,11 @@ use crate::common::*;
pub(crate) struct Summary { pub(crate) struct Summary {
pub(crate) commands: String, pub(crate) commands: String,
pub(crate) references: String, pub(crate) references: String,
pub(crate) include_changelog: bool,
} }
impl Summary { impl Summary {
pub(crate) fn new(project: &Project) -> Summary { pub(crate) fn new(project: &Project, include_changelog: bool) -> Summary {
let mut commands = Index::new("Commands", "./commands.md"); let mut commands = Index::new("Commands", "./commands.md");
for subcommand in &project.bin.subcommands { for subcommand in &project.bin.subcommands {
@ -27,6 +28,7 @@ impl Summary {
Summary { Summary {
commands: commands.text(), commands: commands.text(),
references: references.text(), references: references.text(),
include_changelog,
} }
} }
} }

View File

@ -5,7 +5,9 @@ Summary
- [FAQ](./faq.md) - [FAQ](./faq.md)
{% if include_changelog %}
- [Changelog](./changelog.md) - [Changelog](./changelog.md)
{% endif %}
{{commands}} {{commands}}