summaryrefslogtreecommitdiffstats
path: root/commands/gendoc.go
diff options
context:
space:
mode:
authorbep <bjorn.erik.pedersen@gmail.com>2015-05-13 15:31:30 +0200
committerspf13 <steve.francia@gmail.com>2015-05-19 10:57:21 -0400
commit599d1b9786ddbaa9203aaca2c96ab33b40a583b1 (patch)
tree9704050ee0a1c9e05b5a7b0ec83ad3fe1975de33 /commands/gendoc.go
parentbe920fdb2c42e5f17f2f5ba1af143b9cabb8b8d4 (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.go59
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.")
+}