summaryrefslogtreecommitdiffstats
path: root/commands/genman.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/genman.go')
-rw-r--r--commands/genman.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/commands/genman.go b/commands/genman.go
new file mode 100644
index 000000000..720046289
--- /dev/null
+++ b/commands/genman.go
@@ -0,0 +1,77 @@
+// Copyright 2016 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package commands
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/gohugoio/hugo/common/hugo"
+ "github.com/gohugoio/hugo/helpers"
+ "github.com/gohugoio/hugo/hugofs"
+ "github.com/spf13/cobra"
+ "github.com/spf13/cobra/doc"
+ jww "github.com/spf13/jwalterweatherman"
+)
+
+var _ cmder = (*genManCmd)(nil)
+
+type genManCmd struct {
+ genmandir string
+ *baseCmd
+}
+
+func newGenManCmd() *genManCmd {
+ cc := &genManCmd{}
+
+ cc.baseCmd = newBaseCmd(&cobra.Command{
+ Use: "man",
+ Short: "Generate man pages for the Hugo CLI",
+ Long: `This command automatically generates up-to-date man pages of Hugo's
+command-line interface. By default, it creates the man page files
+in the "man" directory under the current directory.`,
+
+ RunE: func(cmd *cobra.Command, args []string) error {
+ header := &doc.GenManHeader{
+ Section: "1",
+ Manual: "Hugo Manual",
+ Source: fmt.Sprintf("Hugo %s", hugo.CurrentVersion),
+ }
+ if !strings.HasSuffix(cc.genmandir, helpers.FilePathSeparator) {
+ cc.genmandir += helpers.FilePathSeparator
+ }
+ if found, _ := helpers.Exists(cc.genmandir, hugofs.Os); !found {
+ jww.FEEDBACK.Println("Directory", cc.genmandir, "does not exist, creating...")
+ if err := hugofs.Os.MkdirAll(cc.genmandir, 0777); err != nil {
+ return err
+ }
+ }
+ cmd.Root().DisableAutoGenTag = true
+
+ jww.FEEDBACK.Println("Generating Hugo man pages in", cc.genmandir, "...")
+ doc.GenManTree(cmd.Root(), header, cc.genmandir)
+
+ jww.FEEDBACK.Println("Done.")
+
+ return nil
+ },
+ })
+
+ cc.cmd.PersistentFlags().StringVar(&cc.genmandir, "dir", "man/", "the directory to write the man pages.")
+
+ // For bash-completion
+ cc.cmd.PersistentFlags().SetAnnotation("dir", cobra.BashCompSubdirsInDir, []string{})
+
+ return cc
+}