gen_docs.go

 1package main
 2
 3import (
 4	"fmt"
 5	"os"
 6	"path"
 7	"path/filepath"
 8	"time"
 9
10	"github.com/spf13/cobra/doc"
11
12	"github.com/MichaelMure/git-bug/commands"
13)
14
15func main() {
16	fmt.Println("Generating documentation ...")
17
18	tasks := map[string]func() error{
19		"BridgeConfig": commands.GenBridgeConfig,
20		"ManPage":      genManPage,
21		"Markdown":     genMarkdown,
22	}
23
24	// Due to concurrency issues in cobra, the following can't be concurrent :(
25
26	// var wg sync.WaitGroup
27	for name, f := range tasks {
28		// wg.Add(1)
29		// go func(name string, f func() error) {
30		// 	defer wg.Done()
31		err := f()
32		if err != nil {
33			fmt.Printf("  - %s: %v\n", name, err)
34			return
35		}
36		fmt.Printf("  - %s: ok\n", name)
37		// }(name, f)
38	}
39
40	// wg.Wait()
41}
42
43func genManPage() error {
44	cwd, _ := os.Getwd()
45	dir := path.Join(cwd, "doc", "man")
46
47	date := time.Date(2019, 4, 1, 12, 0, 0, 0, time.UTC)
48
49	header := &doc.GenManHeader{
50		Title:   "GIT-BUG",
51		Section: "1",
52		Date:    &date,
53		Source:  "Generated from git-bug's source code",
54	}
55
56	files, err := filepath.Glob(dir + "/*.1")
57	if err != nil {
58		return err
59	}
60	for _, f := range files {
61		if err := os.Remove(f); err != nil {
62			return err
63		}
64	}
65
66	return doc.GenManTree(commands.NewRootCommand(), header, dir)
67}
68
69func genMarkdown() error {
70	cwd, _ := os.Getwd()
71	dir := path.Join(cwd, "doc", "md")
72
73	files, err := filepath.Glob(dir + "/*.md")
74	if err != nil {
75		return err
76	}
77	for _, f := range files {
78		if err := os.Remove(f); err != nil {
79			return err
80		}
81	}
82
83	return doc.GenMarkdownTree(commands.NewRootCommand(), dir)
84}