diff options
Diffstat (limited to 'commands/genman.go')
-rw-r--r-- | commands/genman.go | 77 |
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 +} |