1package main
2
3import (
4 "fmt"
5 "os"
6 "path"
7 "path/filepath"
8 "sync"
9 "time"
10
11 "github.com/spf13/cobra"
12 "github.com/spf13/cobra/doc"
13
14 "github.com/MichaelMure/git-bug/commands"
15)
16
17func main() {
18 fmt.Println("Generating documentation ...")
19
20 tasks := map[string]func(*cobra.Command) error{
21 "ManPage": genManPage,
22 "Markdown": genMarkdown,
23 }
24
25 var wg sync.WaitGroup
26 for name, f := range tasks {
27 wg.Add(1)
28 go func(name string, f func(*cobra.Command) error) {
29 defer wg.Done()
30 root := commands.NewRootCommand()
31 err := f(root)
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(root *cobra.Command) error {
44 cwd, _ := os.Getwd()
45 dir := path.Join(cwd, "doc", "man")
46
47 // fixed date to avoid having to commit each month
48 date := time.Date(2019, 4, 1, 12, 0, 0, 0, time.UTC)
49
50 header := &doc.GenManHeader{
51 Title: "GIT-BUG",
52 Section: "1",
53 Date: &date,
54 Source: "Generated from git-bug's source code",
55 }
56
57 files, err := filepath.Glob(dir + "/*.1")
58 if err != nil {
59 return err
60 }
61 for _, f := range files {
62 if err := os.Remove(f); err != nil {
63 return err
64 }
65 }
66
67 return doc.GenManTree(root, header, dir)
68}
69
70func genMarkdown(root *cobra.Command) error {
71 cwd, _ := os.Getwd()
72 dir := path.Join(cwd, "doc", "md")
73
74 files, err := filepath.Glob(dir + "/*.md")
75 if err != nil {
76 return err
77 }
78 for _, f := range files {
79 if err := os.Remove(f); err != nil {
80 return err
81 }
82 }
83
84 return doc.GenMarkdownTree(root, dir)
85}