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}