Skip to content

Commit 58bbf9d

Browse files
authored
Limit works (#354)
1 parent f6ee142 commit 58bbf9d

File tree

4 files changed

+67
-785
lines changed

4 files changed

+67
-785
lines changed

Diff for: cmds/htmlassets/htmlassets.go

+16-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ import (
5454
"github.com/gauntface/go-html-asset-manager/v4/utils/html/htmlencoding"
5555
"github.com/gauntface/go-html-asset-manager/v4/utils/vimeoapi"
5656
"github.com/mitchellh/go-homedir"
57+
"github.com/schollz/progressbar/v3"
5758
"golang.org/x/net/html"
59+
"golang.org/x/sync/semaphore"
5860
)
5961

6062
var (
@@ -216,15 +218,25 @@ func (c *client) manipulations(manager assetmanagerManager, manipulators []manip
216218
}
217219

218220
func (c *client) manipulateHTMLFiles(assets []assetmanagerLocalAsset, manager assetmanagerManager, manipulators []manipulations.Manipulator) []error {
219-
var wg sync.WaitGroup
220-
wg.Add(len(assets))
221+
ctx := context.Background()
221222

222223
errs := []error{}
223224
var errMu sync.Mutex
224225

226+
maxWorkers := int64(24)
227+
sem := semaphore.NewWeighted(maxWorkers)
228+
bar := progressbar.Default(int64(len(assets)), "HTML files processed")
229+
225230
for _, htmlAsset := range assets {
231+
if err := sem.Acquire(ctx, 1); err != nil {
232+
errMu.Lock()
233+
defer errMu.Unlock()
234+
errs = append(errs, fmt.Errorf("%w %q: %v", errManipulate, htmlAsset.Path(), err))
235+
}
236+
226237
go func(htmlAsset assetmanagerLocalAsset) {
227-
defer wg.Done()
238+
defer sem.Release(1)
239+
defer bar.Add(1)
228240

229241
err := c.manipulateHTMLFile(htmlAsset, manager, manipulators)
230242
if err != nil {
@@ -235,7 +247,7 @@ func (c *client) manipulateHTMLFiles(assets []assetmanagerLocalAsset, manager as
235247
}(htmlAsset)
236248
}
237249

238-
wg.Wait()
250+
sem.Acquire(ctx, maxWorkers)
239251

240252
return errs
241253
}

Diff for: go.mod

+1-5
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ require (
1313
github.com/otiai10/copy v1.9.0
1414
github.com/schollz/progressbar/v3 v3.12.2
1515
golang.org/x/net v0.4.0
16+
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
1617
)
1718

18-
require github.com/tdewolff/parse/v2 v2.6.1 // indirect
19-
2019
require (
2120
github.com/aws/aws-sdk-go-v2 v1.17.2 // indirect
2221
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect
@@ -34,14 +33,11 @@ require (
3433
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.9 // indirect
3534
github.com/aws/aws-sdk-go-v2/service/sts v1.17.6 // indirect
3635
github.com/aws/smithy-go v1.13.5 // indirect
37-
github.com/gauntface/go-html-asset-manager/v3 v3.1.4 // indirect
3836
github.com/jmespath/go-jmespath v0.4.0 // indirect
3937
github.com/mattn/go-runewidth v0.0.14 // indirect
4038
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
4139
github.com/rivo/uniseg v0.4.3 // indirect
4240
github.com/stretchr/testify v1.7.0 // indirect
43-
github.com/tdewolff/minify/v2 v2.12.0 // indirect
44-
golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503 // indirect
4541
golang.org/x/image v0.2.0 // indirect
4642
golang.org/x/sys v0.3.0 // indirect
4743
golang.org/x/term v0.3.0 // indirect

0 commit comments

Comments
 (0)