From bc2eba459f56d21ac3f18147a9ae7b09d65b7980 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Thu, 26 Dec 2013 17:28:37 +0400 Subject: [PATCH] Fix bugs with publishing w/o source or short names. --- debian/publish.go | 7 ++++++- debian/repository.go | 7 ++++++- debian/repository_test.go | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/debian/publish.go b/debian/publish.go index ba5bc30f..e58eb542 100644 --- a/debian/publish.go +++ b/debian/publish.go @@ -98,7 +98,12 @@ func (p *PublishedRepo) Publish(repo *Repository, packageCollection *PackageColl err = list.ForEach(func(pkg *Package) error { if pkg.Architecture == arch || pkg.Architecture == "all" { - path, err := repo.LinkFromPool(p.Prefix, p.Component, pkg.Filename, pkg.HashMD5, pkg.Source) + source := pkg.Source + if source == "" { + source = pkg.Name + } + + path, err := repo.LinkFromPool(p.Prefix, p.Component, pkg.Filename, pkg.HashMD5, source) if err != nil { return err } diff --git a/debian/repository.go b/debian/repository.go index 69715983..6de5cea8 100644 --- a/debian/repository.go +++ b/debian/repository.go @@ -45,6 +45,11 @@ func (r *Repository) PoolPath(filename string, hashMD5 string) (string, error) { return filepath.Join(r.RootPath, "pool", hashMD5[0:2], hashMD5[2:4], filename), nil } +// PublicPath returns root of public part of repository +func (r *Repository) PublicPath() string { + return filepath.Join(r.RootPath, "public") +} + // MkDir creates directory recursively under public path func (r *Repository) MkDir(path string) error { return os.MkdirAll(filepath.Join(r.RootPath, "public", path), 0755) @@ -62,7 +67,7 @@ func (r *Repository) LinkFromPool(prefix string, component string, filename stri return "", err } - if len(source) < 3 { + if len(source) < 2 { return "", fmt.Errorf("package source %s too short", source) } diff --git a/debian/repository_test.go b/debian/repository_test.go index 2f8dc754..d1740473 100644 --- a/debian/repository_test.go +++ b/debian/repository_test.go @@ -28,6 +28,10 @@ func (s *RepositorySuite) TestPoolPath(c *C) { c.Assert(err, ErrorMatches, ".*is invalid") } +func (s *RepositorySuite) TestPublicPath(c *C) { + c.Assert(s.repo.PublicPath(), Equals, filepath.Join(s.repo.RootPath, "public")) +} + func (s *RepositorySuite) TestMkDir(c *C) { err := s.repo.MkDir("ppa/dists/squeeze/") c.Assert(err, IsNil)