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