1package main
2
3import (
4 "fmt"
5 "os"
6 "path/filepath"
7 "sync"
8 "time"
9
10 "github.com/spf13/cobra"
11 "github.com/spf13/cobra/doc"
12
13 "github.com/git-bug/git-bug/commands"
14)
15
16func main() {
17 fmt.Println("Generating documentation ...")
18
19 tasks := map[string]func(*cobra.Command) error{
20 "ManPage": genManPage,
21 "Markdown": genMarkdown,
22 }
23
24 var wg sync.WaitGroup
25 for name, f := range tasks {
26 wg.Add(1)
27 go func(name string, f func(*cobra.Command) error) {
28 defer wg.Done()
29 root := commands.NewRootCommand()
30 err := f(root)
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(root *cobra.Command) error {
43 cwd, _ := os.Getwd()
44 dir := filepath.Join(cwd, "doc", "man")
45
46 // fixed date to avoid having to commit each month
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(root, header, dir)
67}
68
69func genMarkdown(root *cobra.Command) error {
70 cwd, _ := os.Getwd()
71 dir := filepath.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(root, dir)
84}