From 50b5d0af29698f8866d55b8dac4da60276784d14 Mon Sep 17 00:00:00 2001 From: Anthony Fok Date: Sat, 28 Nov 2015 07:32:02 -0700 Subject: [PATCH] Support setting target directory in `hugo gen man` Fixes #1627 --- commands/genman.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/commands/genman.go b/commands/genman.go index 1992628f0..3dc8d3f52 100644 --- a/commands/genman.go +++ b/commands/genman.go @@ -2,12 +2,15 @@ package commands import ( "fmt" + "strings" "github.com/spf13/cobra" "github.com/spf13/hugo/helpers" + "github.com/spf13/hugo/hugofs" jww "github.com/spf13/jwalterweatherman" ) +var genmandir string var genmanCmd = &cobra.Command{ Use: "man", Short: "Generate man pages for the Hugo CLI", @@ -16,15 +19,27 @@ command-line interface. By default, it creates the man page files in the "man" directory under the current directory.`, Run: func(cmd *cobra.Command, args []string) { - genmandir := "man/" - cmd.Root().DisableAutoGenTag = true header := &cobra.GenManHeader{ Section: "1", Manual: "Hugo Manual", Source: fmt.Sprintf("Hugo %s", helpers.HugoVersion()), } + if !strings.HasSuffix(genmandir, helpers.FilePathSeparator) { + genmandir += helpers.FilePathSeparator + } + if found, _ := helpers.Exists(genmandir, hugofs.OsFs); !found { + jww.FEEDBACK.Println("Directory", genmandir, "does not exist, creating...") + hugofs.OsFs.MkdirAll(genmandir, 0777) + } + cmd.Root().DisableAutoGenTag = true + jww.FEEDBACK.Println("Generating Hugo man pages in", genmandir, "...") cmd.Root().GenManTree(header, genmandir) + jww.FEEDBACK.Println("Done.") }, } + +func init() { + genmanCmd.PersistentFlags().StringVar(&genmandir, "dir", "man/", "the directory to write the man pages.") +}