Show progress when loading packages from reflist.

This commit is contained in:
Andrey Smirnov
2014-03-07 00:04:35 +04:00
parent 81dd5a398b
commit 6f86bfec72
8 changed files with 27 additions and 13 deletions
+13 -1
View File
@@ -2,6 +2,7 @@ package debian
import (
"fmt"
"github.com/smira/aptly/aptly"
"github.com/smira/aptly/utils"
"sort"
"strings"
@@ -49,7 +50,7 @@ func NewPackageList() *PackageList {
}
// NewPackageListFromRefList loads packages list from PackageRefList
func NewPackageListFromRefList(reflist *PackageRefList, collection *PackageCollection) (*PackageList, error) {
func NewPackageListFromRefList(reflist *PackageRefList, collection *PackageCollection, progress aptly.Progress) (*PackageList, error) {
// empty reflist
if reflist == nil {
return NewPackageList(), nil
@@ -57,14 +58,25 @@ func NewPackageListFromRefList(reflist *PackageRefList, collection *PackageColle
result := &PackageList{packages: make(map[string]*Package, reflist.Len())}
if progress != nil {
progress.InitBar(int64(reflist.Len()), false)
}
err := reflist.ForEach(func(key []byte) error {
p, err := collection.ByKey(key)
if err != nil {
return fmt.Errorf("unable to load package with key %s: %s", key, err)
}
if progress != nil {
progress.AddBar(1)
}
return result.Add(p)
})
if progress != nil {
progress.ShutdownBar()
}
if err != nil {
return nil, err
}