From 36326788b09e62917baba9dd961977aae07bc807 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Wed, 18 Mar 2015 22:20:52 +0300 Subject: [PATCH] When importing package into local repo, verify that it matches package restriction based on .changes file. #71 --- api/repos.go | 2 +- cmd/repo_add.go | 2 +- cmd/repo_include.go | 12 +++++++++++- deb/import.go | 8 +++++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/api/repos.go b/api/repos.go index 915d62f8..6d4f4a8a 100644 --- a/api/repos.go +++ b/api/repos.go @@ -324,7 +324,7 @@ func apiReposPackageFromDir(c *gin.Context) { } processedFiles, failedFiles2, err = deb.ImportPackageFiles(list, packageFiles, forceReplace, verifier, context.PackagePool(), - context.CollectionFactory().PackageCollection(), reporter) + context.CollectionFactory().PackageCollection(), reporter, nil) failedFiles = append(failedFiles, failedFiles2...) if err != nil { diff --git a/cmd/repo_add.go b/cmd/repo_add.go index 38322367..f017c65e 100644 --- a/cmd/repo_add.go +++ b/cmd/repo_add.go @@ -47,7 +47,7 @@ func aptlyRepoAdd(cmd *commander.Command, args []string) error { var processedFiles, failedFiles2 []string processedFiles, failedFiles2, err = deb.ImportPackageFiles(list, packageFiles, forceReplace, verifier, context.PackagePool(), - context.CollectionFactory().PackageCollection(), &aptly.ConsoleResultReporter{Progress: context.Progress()}) + context.CollectionFactory().PackageCollection(), &aptly.ConsoleResultReporter{Progress: context.Progress()}, nil) failedFiles = append(failedFiles, failedFiles2...) if err != nil { return fmt.Errorf("unable to import package files: %s", err) diff --git a/cmd/repo_include.go b/cmd/repo_include.go index 37bddb8b..748b6b16 100644 --- a/cmd/repo_include.go +++ b/cmd/repo_include.go @@ -99,10 +99,20 @@ func aptlyRepoInclude(cmd *commander.Command, args []string) error { packageFiles, _ := deb.CollectPackageFiles([]string{changes.TempDir}, reporter) + var restriction deb.PackageQuery + + restriction, err = changes.PackageQuery() + if err != nil { + failedFiles = append(failedFiles, path) + reporter.Warning("unable to process file %s: %s", changes.ChangesName, err) + changes.Cleanup() + continue + } + var processedFiles2, failedFiles2 []string processedFiles2, failedFiles2, err = deb.ImportPackageFiles(list, packageFiles, forceReplace, verifier, context.PackagePool(), - context.CollectionFactory().PackageCollection(), reporter) + context.CollectionFactory().PackageCollection(), reporter, restriction) if err != nil { return fmt.Errorf("unable to import package files: %s", err) diff --git a/deb/import.go b/deb/import.go index dfc02577..4ca11347 100644 --- a/deb/import.go +++ b/deb/import.go @@ -53,7 +53,7 @@ func CollectPackageFiles(locations []string, reporter aptly.ResultReporter) (pac // ImportPackageFiles imports files into local repository func ImportPackageFiles(list *PackageList, packageFiles []string, forceReplace bool, verifier utils.Verifier, - pool aptly.PackagePool, collection *PackageCollection, reporter aptly.ResultReporter) (processedFiles []string, failedFiles []string, err error) { + pool aptly.PackagePool, collection *PackageCollection, reporter aptly.ResultReporter, restriction PackageQuery) (processedFiles []string, failedFiles []string, err error) { if forceReplace { list.PrepareIndex() } @@ -150,6 +150,12 @@ func ImportPackageFiles(list *PackageList, packageFiles []string, forceReplace b continue } + if restriction != nil && !restriction.Matches(p) { + reporter.Warning("%s has been ignored as it doesn't match restriction", p) + failedFiles = append(failedFiles, file) + continue + } + err = collection.Update(p) if err != nil { reporter.Warning("Unable to save package %s: %s", p, err)