#!/usr/bin/python3
# -*- coding: utf-8 -*-

from collections import defaultdict

from rblib import remote


def possible_bugs():
    conn = remote.start_udd_connection()
    package_to_bugs = defaultdict(list)
    for row in remote.query_udd(conn,
                                """SELECT bugs.id, bugs.source, bugs.title
                                   FROM bugs INNER JOIN bugs_usertags USING (id)
                                   WHERE email='reproducible-builds@lists.alioth.debian.org' AND tag='ftbfs'
                                      AND severity IN ('critical', 'grave', 'serious')
                                      AND affects_unstable AND NOT affects_testing
                                      AND status='pending'"""):
        package_to_bugs[row[1]].append((row[0], row[2]))

    return package_to_bugs


def package_status():
    package_suite_status = defaultdict(dict)
    for record in remote.load_json():
        if 'amd64' == record['architecture']:
            package_suite_status[record['package']][record['suite']] = record['status']
    return package_suite_status

if '__main__' == __name__:
    package_suite_status = package_status()

    for package, bugs in possible_bugs().items():
        this_package = package_suite_status[package]
        if 'unstable' not in this_package or 'FTBFS' != this_package['unstable']:
            continue
        if 'testing' in this_package and 'FTBFS' == this_package['testing']:
            for bug in bugs:
                print('bts tag {} + stretch # {}/rb-pkg/testing/amd64/{}.html ## https://bugs.debian.org/{} ## {}'
                      .format(bug[0], remote.RB_SITE, package, bug[0], bug[1]))
            if len(bugs) > 1:
                print()
