New command: package search to search whole package DB for matching packages. #80

This commit is contained in:
Andrey Smirnov
2014-08-28 19:42:47 +04:00
parent 608870265c
commit 468b1f11b9
4 changed files with 65 additions and 0 deletions
+1
View File
@@ -62,6 +62,7 @@ package environment to new version.`,
makeCmdTask(),
makeCmdPublish(),
makeCmdVersion(),
makeCmdPackage(),
},
}
+15
View File
@@ -0,0 +1,15 @@
package cmd
import (
"github.com/smira/commander"
)
func makeCmdPackage() *commander.Command {
return &commander.Command{
UsageLine: "package",
Short: "operations on packages",
Subcommands: []*commander.Command{
makeCmdPackageSearch(),
},
}
}
+48
View File
@@ -0,0 +1,48 @@
package cmd
import (
"fmt"
"github.com/smira/aptly/deb"
"github.com/smira/aptly/query"
"github.com/smira/commander"
"github.com/smira/flag"
)
func aptlyPackageSearch(cmd *commander.Command, args []string) error {
var err error
if len(args) != 1 {
cmd.Usage()
return commander.ErrCommandError
}
q, err := query.Parse(args[0])
if err != nil {
return fmt.Errorf("unable to search: %s", err)
}
result := q.Query(context.CollectionFactory().PackageCollection())
result.ForEach(func(p *deb.Package) error {
context.Progress().Printf("%s\n", p)
return nil
})
return err
}
func makeCmdPackageSearch() *commander.Command {
cmd := &commander.Command{
Run: aptlyPackageSearch,
UsageLine: "search <package-query>",
Short: "search for packages matching query",
Long: `
Command search displays list of packages in whole DB that match package query
Example:
$ aptly package search '$Architecture (i386), Name (% *-dev)'
`,
Flag: *flag.NewFlagSet("aptly-package-search", flag.ExitOnError),
}
return cmd
}
+1
View File
@@ -5,6 +5,7 @@ Commands:
db manage aptly's internal database and package pool
graph render graph of relationships
mirror manage mirrors of remote repositories
package operations on packages
publish manage published repositories
repo manage local package repositories
serve HTTP serve published repositories