aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2020-09-27 21:30:50 +0200
committerMichael Muré <batolettre@gmail.com>2020-09-27 21:30:50 +0200
commit7f87eb8602b76acbf3acc91391249d0e76424db6 (patch)
treee473838db617dd8f1caed7271cb418dbcabbd652
parent148b335dd345347af24487d6130bc713a6387bdc (diff)
downloadgit-bug-7f87eb8602b76acbf3acc91391249d0e76424db6.tar.gz
doc: generate concurrently
-rw-r--r--doc/gen_docs.go40
-rw-r--r--misc/gen_completion.go3
2 files changed, 22 insertions, 21 deletions
diff --git a/doc/gen_docs.go b/doc/gen_docs.go
index 83997488..8bb596fe 100644
--- a/doc/gen_docs.go
+++ b/doc/gen_docs.go
@@ -5,8 +5,10 @@ import (
"os"
"path"
"path/filepath"
+ "sync"
"time"
+ "github.com/spf13/cobra"
"github.com/spf13/cobra/doc"
"github.com/MichaelMure/git-bug/commands"
@@ -15,34 +17,34 @@ import (
func main() {
fmt.Println("Generating documentation ...")
- tasks := map[string]func() error{
+ tasks := map[string]func(*cobra.Command) error{
"ManPage": genManPage,
"Markdown": genMarkdown,
}
- // Due to concurrency issues in cobra, the following can't be concurrent :(
-
- // var wg sync.WaitGroup
+ var wg sync.WaitGroup
for name, f := range tasks {
- // wg.Add(1)
- // go func(name string, f func() error) {
- // defer wg.Done()
- err := f()
- if err != nil {
- fmt.Printf(" - %s: %v\n", name, err)
- return
- }
- fmt.Printf(" - %s: ok\n", name)
- // }(name, f)
+ wg.Add(1)
+ go func(name string, f func(*cobra.Command) error) {
+ defer wg.Done()
+ root := commands.NewRootCommand()
+ err := f(root)
+ if err != nil {
+ fmt.Printf(" - %s: %v\n", name, err)
+ return
+ }
+ fmt.Printf(" - %s: ok\n", name)
+ }(name, f)
}
- // wg.Wait()
+ wg.Wait()
}
-func genManPage() error {
+func genManPage(root *cobra.Command) error {
cwd, _ := os.Getwd()
dir := path.Join(cwd, "doc", "man")
+ // fixed date to avoid having to commit each month
date := time.Date(2019, 4, 1, 12, 0, 0, 0, time.UTC)
header := &doc.GenManHeader{
@@ -62,10 +64,10 @@ func genManPage() error {
}
}
- return doc.GenManTree(commands.NewRootCommand(), header, dir)
+ return doc.GenManTree(root, header, dir)
}
-func genMarkdown() error {
+func genMarkdown(root *cobra.Command) error {
cwd, _ := os.Getwd()
dir := path.Join(cwd, "doc", "md")
@@ -79,5 +81,5 @@ func genMarkdown() error {
}
}
- return doc.GenMarkdownTree(commands.NewRootCommand(), dir)
+ return doc.GenMarkdownTree(root, dir)
}
diff --git a/misc/gen_completion.go b/misc/gen_completion.go
index 0bc546f7..af00fa64 100644
--- a/misc/gen_completion.go
+++ b/misc/gen_completion.go
@@ -14,8 +14,6 @@ import (
func main() {
fmt.Println("Generating completion files ...")
- root := commands.NewRootCommand()
-
tasks := map[string]func(*cobra.Command) error{
"Bash": genBash,
"Fish": genFish,
@@ -28,6 +26,7 @@ func main() {
wg.Add(1)
go func(name string, f func(*cobra.Command) error) {
defer wg.Done()
+ root := commands.NewRootCommand()
err := f(root)
if err != nil {
fmt.Printf(" - %s: %v\n", name, err)