mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-29 04:16:07 +00:00
Deleting packages & building file list from packages.
This commit is contained in:
Vendored
+21
-1
@@ -247,7 +247,7 @@ func (p *Package) LinkFromPool(packageRepo *Repository, prefix string, component
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PoolDirectory returns directory in package pool for this package files
|
// PoolDirectory returns directory in package pool of published repository for this package files
|
||||||
func (p *Package) PoolDirectory() (string, error) {
|
func (p *Package) PoolDirectory() (string, error) {
|
||||||
source := p.Source
|
source := p.Source
|
||||||
if source == "" {
|
if source == "" {
|
||||||
@@ -314,6 +314,21 @@ func (p *Package) VerifyFiles(packageRepo *Repository) (result bool, err error)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FilepathsList returns list of paths to files in package repository
|
||||||
|
func (p *Package) FilepathList(packageRepo *Repository) ([]string, error) {
|
||||||
|
var err error
|
||||||
|
result := make([]string, len(p.Files))
|
||||||
|
|
||||||
|
for i, f := range p.Files {
|
||||||
|
result[i], err = packageRepo.RelativePoolPath(f.Filename, f.Checksums.MD5)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
// PackageCollection does management of packages in DB
|
// PackageCollection does management of packages in DB
|
||||||
type PackageCollection struct {
|
type PackageCollection struct {
|
||||||
db database.Storage
|
db database.Storage
|
||||||
@@ -350,3 +365,8 @@ func (collection *PackageCollection) Update(p *Package) error {
|
|||||||
func (collection *PackageCollection) AllPackageRefs() *PackageRefList {
|
func (collection *PackageCollection) AllPackageRefs() *PackageRefList {
|
||||||
return &PackageRefList{Refs: collection.db.KeysByPrefix([]byte("P"))}
|
return &PackageRefList{Refs: collection.db.KeysByPrefix([]byte("P"))}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteByKey deletes package in DB by key
|
||||||
|
func (collection *PackageCollection) DeleteByKey(key []byte) error {
|
||||||
|
return collection.db.Delete(key)
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+20
@@ -182,6 +182,15 @@ func (s *PackageSuite) TestLinkFromPool(c *C) {
|
|||||||
c.Check(p.Files[0].Filename, Equals, "pool/non-free/a/alien-arena/alien-arena-common_7.40-2_i386.deb")
|
c.Check(p.Files[0].Filename, Equals, "pool/non-free/a/alien-arena/alien-arena-common_7.40-2_i386.deb")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PackageSuite) TestFilepathList(c *C) {
|
||||||
|
packageRepo := NewRepository(c.MkDir())
|
||||||
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
|
|
||||||
|
list, err := p.FilepathList(packageRepo)
|
||||||
|
c.Check(err, IsNil)
|
||||||
|
c.Check(list, DeepEquals, []string{"1e/8c/alien-arena-common_7.40-2_i386.deb"})
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PackageSuite) TestDownloadList(c *C) {
|
func (s *PackageSuite) TestDownloadList(c *C) {
|
||||||
packageRepo := NewRepository(c.MkDir())
|
packageRepo := NewRepository(c.MkDir())
|
||||||
p := NewPackageFromControlFile(s.stanza)
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
@@ -247,3 +256,14 @@ func (s *PackageCollectionSuite) TestAllPackageRefs(c *C) {
|
|||||||
c.Check(refs.Len(), Equals, 1)
|
c.Check(refs.Len(), Equals, 1)
|
||||||
c.Check(refs.Refs[0], DeepEquals, s.p.Key())
|
c.Check(refs.Refs[0], DeepEquals, s.p.Key())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PackageCollectionSuite) TestDeleteByKey(c *C) {
|
||||||
|
err := s.collection.Update(s.p)
|
||||||
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
|
err = s.collection.DeleteByKey(s.p.Key())
|
||||||
|
c.Check(err, IsNil)
|
||||||
|
|
||||||
|
_, err = s.collection.ByKey(s.p.Key())
|
||||||
|
c.Check(err, ErrorMatches, "key not found")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user