diff options
author | Olav Vitters <ovitters@mageia.org> | 2012-11-27 09:59:27 +0000 |
---|---|---|
committer | Olav Vitters <ovitters@mageia.org> | 2012-11-27 09:59:27 +0000 |
commit | f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2 (patch) | |
tree | 975aa81a2ff557c02c76b4ea3f48e52ef3c913f6 | |
parent | ea1a7f391f5aad992d4cf08b81e33ff6a0cecaca (diff) | |
download | mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.gz mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.bz2 mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.xz mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.zip |
add group-owner subcommand
-rwxr-xr-x | mgagnome | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -678,6 +678,53 @@ def join_streams(show_version=False, only_diff_version=False): yield (package, module, package_version, spec_version, downstream.files[package]) +def cmd_group_owner(options, parser): + groups = set(options.group) + + output = [pkg.split("\t") for pkg in subprocess.check_output(["urpmf", "-F|", "--qf", "%group\t%name\t%sourcerpm\t%version\t%release", "."]).splitlines()] + if not output: return + + # Filter by groups + output = [pkg for pkg in output if pkg[0] in groups] + if not output: return + + packages = {} + for group, name, sourcerpm, version, release in output: + if group not in packages: + packages[group] = {} + + source = sourcerpm if sourcerpm else name + end = ".src.rpm" + if source.endswith(end): source = source[:len(source) - len(end)] + end = "-%s-%s" %(version, release) + if source.endswith(end): source = source[:len(source) - len(end)] + + if source not in packages[group]: packages[group][source] = set() + + packages[group][source].add(name) + + + maints = dict([line.rpartition(" ")[::2] for line in subprocess.check_output(["mgarepo", "maintdb", "get"]).splitlines()]) + + def get_output(source, maints, packages): + for source in packages.keys(): + maint = maints.get(source, "?") + + yield "\t".join((maint, source, ",".join(packages[source]))) + + first = True + for group in packages.keys(): + if first: + first = False + else: + print "" + print "" + print group + print "" + + for line in sorted(get_output(source, maints, packages[group])): + print line + def cmd_ls(options, parser): streams = join_streams(show_version=options.show_version, only_diff_version=options.diff) if options.sort: @@ -932,6 +979,13 @@ def main(): func=cmd_ls, upstream=False, show_version=False, diff=False ) + subparser = subparsers.add_parser('group-owner', help='list packages by group') + subparser.add_argument('group', metavar="GROUP", nargs='+') + + subparser.set_defaults( + func=cmd_group_owner + ) + subparser = subparsers.add_parser('check-latest', help='check for latest version of packages') subparser.set_defaults( func=cmd_check_latest |