Skip to content

Instantly share code, notes, and snippets.

@calston
Created October 14, 2016 10:57
Show Gist options
  • Save calston/d9dd9ddc87d52454f7d236b3e5771f34 to your computer and use it in GitHub Desktop.
Save calston/d9dd9ddc87d52454f7d236b3e5771f34 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import sys, re
from distutils import version
bucket = {}
package = re.compile(r'([\w_-]+)-([\d\w_\.-]+)\.(noarch|x86_64)')
with open(sys.argv[1]) as f:
for ln in f:
pkg = ln.strip()
if pkg:
m = package.match(pkg)
if not m:
continue
name, pk_version, arch = m.groups()
if not "." in pk_version:
sver = re.match('.*(\d+\.\d+).*', pkg)
if sver:
ver = version.LooseVersion(sver.groups()[0])
else:
ver = version.LooseVersion(pk_version)
if name in bucket:
bucket[name].append((ver, pkg))
else:
bucket[name] = [(ver, pkg)]
keys = bucket.keys()
keys.sort()
for key in keys:
bucket[key].sort(key=lambda v: v[0])
print(bucket[key][-1][1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment