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}