diff options
author | bep <bjorn.erik.pedersen@gmail.com> | 2015-05-13 15:31:30 +0200 |
---|---|---|
committer | spf13 <steve.francia@gmail.com> | 2015-05-19 10:57:21 -0400 |
commit | 599d1b9786ddbaa9203aaca2c96ab33b40a583b1 (patch) | |
tree | 9704050ee0a1c9e05b5a7b0ec83ad3fe1975de33 /commands/gendoc.go | |
parent | be920fdb2c42e5f17f2f5ba1af143b9cabb8b8d4 (diff) |
Add gendoc command
Using the new, great auto-doc in Cobra.
This commit also contains a current result of that command added to a commands section in docs.
Fixes #1136
Diffstat (limited to 'commands/gendoc.go')
-rw-r--r-- | commands/gendoc.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/commands/gendoc.go b/commands/gendoc.go new file mode 100644 index 000000000..b8b07a0b7 --- /dev/null +++ b/commands/gendoc.go @@ -0,0 +1,59 @@ +package commands + +import ( + "fmt" + "github.com/spf13/cobra" + "github.com/spf13/hugo/helpers" + "github.com/spf13/hugo/hugofs" + "path" + "path/filepath" + "strings" + "time" +) + +const gendocFrontmatterTemplate = `--- +date: %s +title: "%s" +slug: %s +url: %s +--- +` + +var gendocdir string +var gendocCmd = &cobra.Command{ + Use: "gendoc", + Short: "Generate Markdown documentation for the Hugo CLI.", + Long: `Generate Markdown documentation for the Hugo CLI. + + This command is, mostly, used to create up-to-date documentation for gohugo.io. + + It creates one Markdown file per command with front matter suitable for rendering in Hugo. + `, + + Run: func(cmd *cobra.Command, args []string) { + if !strings.HasSuffix(gendocdir, helpers.FilePathSeparator) { + gendocdir += helpers.FilePathSeparator + } + if found, _ := helpers.Exists(gendocdir, hugofs.OsFs); !found { + hugofs.OsFs.Mkdir(gendocdir, 0777) + } + now := time.Now().Format(time.RFC3339) + prepender := func(filename string) string { + name := filepath.Base(filename) + base := strings.TrimSuffix(name, path.Ext(name)) + url := "/commands/" + strings.ToLower(base) + "/" + return fmt.Sprintf(gendocFrontmatterTemplate, now, strings.Replace(base, "_", " ", -1), base, url) + } + + linkHandler := func(name string) string { + base := strings.TrimSuffix(name, path.Ext(name)) + return "/commands/" + strings.ToLower(base) + "/" + } + + cobra.GenMarkdownTreeCustom(cmd.Root(), gendocdir, prepender, linkHandler) + }, +} + +func init() { + gendocCmd.PersistentFlags().StringVar(&gendocdir, "dir", "/tmp/hugodoc/", "the directory to write the doc.") +} |