#!/usr/bin/python
# Author: Kees Cook <kees@canonical.com>
# Copyright (C) 2010 Canonical, Ltd.
# License: GPLv3
#
# Report the versions and component of binary packages for a given source
# package.  (Mostly I use this to see which packages are in universe for
# a split-support source package.)

import sys
import optparse
import httplib2

parser = optparse.OptionParser()
parser.add_option("--lpnet", help="Use lpnet instead of edge for LP API", action='store_true', default=False)
parser.add_option("--debug", help="Show HTTP requests", action='store_true', default=False)
(opt, args) = parser.parse_args()

if opt.debug:
    httplib2.debuglevel = 1
import lpl_common

lp = lpl_common.connect(use_edge=not opt.lpnet)

if len(args)<2:
    print >>sys.stderr, "Usage: %s RELEASE SRC [SRC ...]" % (sys.argv[0])
    sys.exit(1)
release_name = args.pop(0)

ubuntu = lp.distributions['ubuntu']
primary, partner = ubuntu.archives

release = ubuntu.getSeries(name_or_version=release_name)

for pkg_name in args:
    src = primary.getPublishedSources(source_name=pkg_name,
                                      status='Published',
                                      distro_series=release,
                                      exact_match=True)[0]
    seen = dict()
    for bin in src.getPublishedBinaries():
        report = '%s %s %s' % (bin.binary_package_name,
                               bin.binary_package_version, bin.component_name)
        if seen.has_key(bin.binary_package_name):
            if seen[bin.binary_package_name] != report:
                print >>sys.stderr, "Inter-build discontinuity!? (%s)" % (report)
                sys.exit(1)
            continue
        seen[bin.binary_package_name] = report
        print report
