summaryrefslogtreecommitdiffstats
path: root/mgagnome
diff options
context:
space:
mode:
authorOlav Vitters <ovitters@mageia.org>2012-11-27 09:59:27 +0000
committerOlav Vitters <ovitters@mageia.org>2012-11-27 09:59:27 +0000
commitf6d527e36409afb7366a4689fb4e8ed7fbbbc8f2 (patch)
tree975aa81a2ff557c02c76b4ea3f48e52ef3c913f6 /mgagnome
parentea1a7f391f5aad992d4cf08b81e33ff6a0cecaca (diff)
downloadmgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar
mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.gz
mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.bz2
mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.tar.xz
mgagnome-f6d527e36409afb7366a4689fb4e8ed7fbbbc8f2.zip
add group-owner subcommand
Diffstat (limited to 'mgagnome')
-rwxr-xr-xmgagnome54
1 files changed, 54 insertions, 0 deletions
diff --git a/mgagnome b/mgagnome
index 254c946..b8f768a 100755
--- a/mgagnome
+++ b/mgagnome
@@ -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