MCPcopy Create free account
hub / github.com/antonmedv/gitmal / generateCommits

Function generateCommits

commit.go:26–106  ·  view source on GitHub ↗
(commits map[string]git.Commit, params Params)

Source from the content-addressed store, hash-verified

24)
25
26func generateCommits(commits map[string]git.Commit, params Params) error {
27 outDir := filepath.Join(params.OutputDir, "commit")
28 if err := os.MkdirAll(outDir, 0o755); err != nil {
29 return err
30 }
31
32 list := make([]git.Commit, 0, len(commits))
33 for _, c := range commits {
34 list = append(list, c)
35 }
36
37 workers := runtime.NumCPU()
38 if workers < 1 {
39 workers = 1
40 }
41
42 ctx, cancel := context.WithCancel(context.Background())
43 defer cancel()
44
45 jobs := make(chan git.Commit)
46 errCh := make(chan error, 1)
47 var wg sync.WaitGroup
48
49 p := progress_bar.NewProgressBar("commits", len(list))
50
51 workerFn := func() {
52 defer wg.Done()
53 for {
54 select {
55 case <-ctx.Done():
56 return
57 case c, ok := <-jobs:
58 if !ok {
59 return
60 }
61 if err := generateCommitPage(c, params); err != nil {
62 select {
63 case errCh <- err:
64 cancel()
65 default:
66 }
67 return
68 }
69 p.Inc()
70 }
71 }
72 }
73
74 wg.Add(workers)
75 for i := 0; i < workers; i++ {
76 go workerFn()
77 }
78
79 go func() {
80 defer close(jobs)
81 for _, c := range list {
82 select {
83 case <-ctx.Done():

Callers 1

mainFunction · 0.85

Calls 4

DoneMethod · 0.95
IncMethod · 0.95
NewProgressBarFunction · 0.92
generateCommitPageFunction · 0.85

Tested by

no test coverage detected