diff --git a/cmd/mirror_update.go b/cmd/mirror_update.go index 47189060..81fb1040 100644 --- a/cmd/mirror_update.go +++ b/cmd/mirror_update.go @@ -227,7 +227,7 @@ func aptlyMirrorUpdate(cmd *commander.Command, args []string) error { return fmt.Errorf("unable to update: %s", err) } - repo.FinalizeDownload(context.CollectionFactory()) + repo.FinalizeDownload(context.CollectionFactory(), context.Progress()) err = context.CollectionFactory().RemoteRepoCollection().Update(repo) if err != nil { return fmt.Errorf("unable to update: %s", err) diff --git a/deb/remote.go b/deb/remote.go index 3ddb5adc..027b9689 100644 --- a/deb/remote.go +++ b/deb/remote.go @@ -540,15 +540,29 @@ func (repo *RemoteRepo) BuildDownloadQueue(packagePool aptly.PackagePool, skipEx } // FinalizeDownload swaps for final value of package refs -func (repo *RemoteRepo) FinalizeDownload(collectionFactory *CollectionFactory) error { +func (repo *RemoteRepo) FinalizeDownload(collectionFactory *CollectionFactory, progress aptly.Progress) error { repo.LastDownloadDate = time.Now() repo.packageRefs = NewPackageRefListFromPackageList(repo.packageList) + if progress != nil { + progress.InitBar(int64(repo.packageList.Len()), true) + } + + var i int + // update all the packages in collection err := repo.packageList.ForEach(func(p *Package) error { + i++ + if progress != nil { + progress.SetBar(i) + } return collectionFactory.PackageCollection().Update(p) }) + if progress != nil { + progress.ShutdownBar() + } + repo.packageList = nil return err diff --git a/deb/remote_test.go b/deb/remote_test.go index 53925b4d..fc8365cc 100644 --- a/deb/remote_test.go +++ b/deb/remote_test.go @@ -272,7 +272,7 @@ func (s *RemoteRepoSuite) TestDownload(c *C) { c.Check(queue, HasLen, 1) c.Check(queue[0].File.DownloadURL(), Equals, "pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb") - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) pkg, err := s.collectionFactory.PackageCollection().ByKey(s.repo.packageRefs.Refs[0]) @@ -298,7 +298,7 @@ func (s *RemoteRepoSuite) TestDownload(c *C) { c.Check(size, Equals, int64(0)) c.Check(queue, HasLen, 0) - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) // Next call must return the download list without option "skip-existing-packages" @@ -320,7 +320,7 @@ func (s *RemoteRepoSuite) TestDownload(c *C) { c.Check(queue, HasLen, 1) c.Check(queue[0].File.DownloadURL(), Equals, "pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb") - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) } @@ -357,7 +357,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSources(c *C) { c.Check(q[2], Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0.orig.tar.gz") c.Check(q[0], Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.debian.tar.gz") - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) pkg, err := s.collectionFactory.PackageCollection().ByKey(s.repo.packageRefs.Refs[0]) @@ -391,7 +391,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSources(c *C) { c.Check(size, Equals, int64(0)) c.Check(queue, HasLen, 0) - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) // Next call must return the download list without option "skip-existing-packages" @@ -416,7 +416,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSources(c *C) { c.Check(size, Equals, int64(15)) c.Check(queue, HasLen, 4) - s.repo.FinalizeDownload(s.collectionFactory) + s.repo.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.repo.packageRefs, NotNil) } @@ -441,7 +441,7 @@ func (s *RemoteRepoSuite) TestDownloadFlat(c *C) { c.Check(queue, HasLen, 1) c.Check(queue[0].File.DownloadURL(), Equals, "pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb") - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) pkg, err := s.collectionFactory.PackageCollection().ByKey(s.flat.packageRefs.Refs[0]) @@ -468,7 +468,7 @@ func (s *RemoteRepoSuite) TestDownloadFlat(c *C) { c.Check(size, Equals, int64(0)) c.Check(queue, HasLen, 0) - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) // Next call must return the download list without option "skip-existing-packages" @@ -491,7 +491,7 @@ func (s *RemoteRepoSuite) TestDownloadFlat(c *C) { c.Check(queue, HasLen, 1) c.Check(queue[0].File.DownloadURL(), Equals, "pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb") - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) } @@ -531,7 +531,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSourcesFlat(c *C) { c.Check(q[2], Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0.orig.tar.gz") c.Check(q[0], Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.debian.tar.gz") - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) pkg, err := s.collectionFactory.PackageCollection().ByKey(s.flat.packageRefs.Refs[0]) @@ -567,7 +567,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSourcesFlat(c *C) { c.Check(size, Equals, int64(0)) c.Check(queue, HasLen, 0) - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) // Next call must return the download list without option "skip-existing-packages" @@ -593,7 +593,7 @@ func (s *RemoteRepoSuite) TestDownloadWithSourcesFlat(c *C) { c.Check(size, Equals, int64(15)) c.Check(queue, HasLen, 4) - s.flat.FinalizeDownload(s.collectionFactory) + s.flat.FinalizeDownload(s.collectionFactory, nil) c.Assert(s.flat.packageRefs, NotNil) }