#!/usr/bin/python
# Perform rmadison-like query directly against Launchpad.  This *will*
# include any deleted versions, to avoid colliding with the md5 cache.
#
# Copyright (C) 2009, Canonical, Ltd.
# Author: Kees Cook <kees@ubuntu.com>
#
import lpl_common, sys, apt_pkg
apt_pkg.InitSystem()

lp = lpl_common.connect()

# Allow either "hardy ffmpeg" or just "ffmpeg" to be used
series_name = sys.argv[1]
try:
    source_package_name = sys.argv[2]
except:
    source_package_name = series_name
    series_name = None

ubuntu = lp.distributions['ubuntu']
if series_name:
    try:
        series = ubuntu.getSeries(name_or_version=series_name)
    except:
        print >>sys.stderr, "Invalid distro series '%s' (try 'hardy', 'intrepid', ...)" % (series_name)
        sys.exit(1)
else:
    series = None
archive = ubuntu.main_archive

pubs = archive.getPublishedSources(exact_match=True,
                                   source_name=source_package_name,
                                   status="Published",
                                   distro_series=series)
max = dict()
for pub in pubs:
    # Skip any deactivated series
    if not pub.distro_series.active:
            continue
    series_name = pub.distro_series.name
    pocket = pub.pocket
    version = pub.source_package_version
    component_name = pub.component_name
    pocket = pocket.lower()
    if pocket == "release":
            pocket = ""
    else:
            pocket = "-" + pocket
    name = "%s%s/%s" % (series_name, pocket, component_name)
    max.setdefault(name,version)
    if apt_pkg.VersionCompare(version, max[name]) > 0:
        max[name]=version
    #print "%s | %s | %s | source" % (source_package_name, version, name)

#print "---"
for name in sorted(max):
    print "%s | %s | %s | source" % (source_package_name, max[name], name)
