shithub: hugo

Download patch

ref: 50b5d0af29698f8866d55b8dac4da60276784d14
parent: 09379e893e2849cb7e86b0ea2f205e70b45a4b14
author: Anthony Fok <[email protected]>
date: Sat Nov 28 02:32:02 EST 2015

Support setting target directory in `hugo gen man`

Fixes #1627

--- a/commands/genman.go
+++ b/commands/genman.go
@@ -2,12 +2,15 @@
 
 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 @@
 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.")
 }