/
outdated.go
45 lines (35 loc) · 1003 Bytes
/
outdated.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package instances
import (
"context"
"github.com/minepkg/minepkg/internals/provider"
)
// type OutdatedList struct {
type OutdatedResult struct {
Dependency Dependency
Result provider.Result
Error error
}
func (i Instance) Outdated(ctx context.Context) ([]OutdatedResult, error) {
dependencies := i.GetDependencyList()
// thread safe list of outdated dependencies
outdated := make(chan *OutdatedResult, len(dependencies))
// wg := sync.WaitGroup{}
// wg.Add(len(dependencies))
for _, dependency := range dependencies {
go func(dependency Dependency) {
// defer wg.Done()
result, err := i.ProviderStore.ResolveLatest(ctx, dependency.ProviderRequest())
outdated <- &OutdatedResult{
Dependency: dependency,
Result: result,
Error: err,
}
}(dependency)
}
// build list
outdatedList := make([]OutdatedResult, 0, len(dependencies))
for range dependencies {
outdatedList = append(outdatedList, *<-outdated)
}
return outdatedList, nil
}