repo._collect_packages(input_path)
repo.save()
+
+ def grouplist(self, group):
+ pkgs = self.repos.get_by_group(group)
+
+ pkgs = packages.PackageListing(pkgs)
+ pkgs.unique()
+
+ return [p.name for p in pkgs]
self.parse_command_search()
self.parse_command_update()
self.parse_command_provides()
+ self.parse_command_grouplist()
# Finally parse all arguments from the command line and save them.
self.args = self.parser.parse_args()
"info" : self.handle_info,
"search" : self.handle_search,
"provides" : self.handle_provides,
+ "grouplist" : self.handle_grouplist,
}
def parse_common_arguments(self):
help=_("File or feature to search for."))
sub_provides.add_argument("action", action="store_const", const="provides")
+ def parse_command_grouplist(self):
+ # Implement the "grouplist" command
+ sub_grouplist = self.sub_commands.add_parser("grouplist",
+ help=_("Get list of packages that belong to the given group."))
+ sub_grouplist.add_argument("group", nargs=1,
+ help=_("Group name to search for."))
+ sub_grouplist.add_argument("action", action="store_const", const="grouplist")
+
def run(self):
action = self.args.action
for pkg in pkgs:
print pkg.dump()
+ def handle_grouplist(self):
+ pkgs = self.pakfire.grouplist(self.args.group[0])
+
+ for pkg in pkgs:
+ print " * %s" % pkg
+
class CliBuilder(Cli):
def __init__(self):
for pkg in repo.get_by_file(filename):
yield pkg
+ def get_by_group(self, group):
+ for repo in self.enabled:
+ for pkg in repo.get_by_group(group):
+ yield pkg
+
def search(self, pattern):
pkg_names = []
if match:
yield pkg
+ def get_by_group(self, group):
+ """
+ Get all packages that belong to a specific group.
+ """
+ for pkg in self.packages:
+ if group in pkg.groups:
+ yield pkg
+
def search(self, pattern):
"""
Returns a list of packages, that match the given pattern,
if not isinstance(pkg, packages.BinaryPackage):
raise Exception
+ # Skip everything but binary packages.
+ if pkg.type == "source":
+ return
+
repo_filename = os.path.join(self.path, os.path.basename(pkg.filename))
# Do we need to copy the package files?