Commit ec17d58
Jason Cox
·
2025-03-23 23:13:06 -0400 EDT
parent 81f5f00
Ensure all revisions get built (#5) The first revision builds synchronously, and then the others build in parallel. Use a wait group to ensure that the program doesn't exit before the other builds finish.
1 files changed,
+9,
-7
M
main.go
M
main.go
+9,
-7
| ... | ... | @@ -626,7 +626,6 @@ func (c *Config) writeRepo() *BranchOutput { | |
| 626 | 626 | ||
| 627 | 627 | refInfoMap := map[string]*RefInfo{} | |
| 628 | 628 | mainOutput := &BranchOutput{} | |
| 629 | - | claimed := false | |
| 630 | 629 | for _, revData := range revs { | |
| 631 | 630 | refInfoMap[revData.Name()] = &RefInfo{ | |
| 632 | 631 | ID: revData.ID(), |
| ... | ... | @@ -665,7 +664,8 @@ func (c *Config) writeRepo() *BranchOutput { | |
| 665 | 664 | return urlI > urlJ | |
| 666 | 665 | }) | |
| 667 | 666 | ||
| 668 | - | for _, revData := range revs { | |
| 667 | + | var wg sync.WaitGroup | |
| 668 | + | for i, revData := range revs { | |
| 669 | 669 | c.Logger.Info("writing revision", "revision", revData.Name()) | |
| 670 | 670 | data := &PageData{ | |
| 671 | 671 | Repo: c, |
| ... | ... | @@ -673,16 +673,18 @@ func (c *Config) writeRepo() *BranchOutput { | |
| 673 | 673 | SiteURLs: c.getURLs(), | |
| 674 | 674 | } | |
| 675 | 675 | ||
| 676 | - | if claimed { | |
| 676 | + | if i == 0 { | |
| 677 | + | branchOutput := c.writeRevision(repo, data, refInfoList) | |
| 678 | + | mainOutput = branchOutput | |
| 679 | + | } else { | |
| 680 | + | wg.Add(1) | |
| 677 | 681 | go func() { | |
| 682 | + | defer wg.Done() | |
| 678 | 683 | c.writeRevision(repo, data, refInfoList) | |
| 679 | 684 | }() | |
| 680 | - | } else { | |
| 681 | - | branchOutput := c.writeRevision(repo, data, refInfoList) | |
| 682 | - | mainOutput = branchOutput | |
| 683 | - | claimed = true | |
| 684 | 685 | } | |
| 685 | 686 | } | |
| 687 | + | wg.Wait() | |
| 686 | 688 | ||
| 687 | 689 | // use the first revision in our list to generate | |
| 688 | 690 | // the root summary, logs, and tree the user can click |