"""Bugs and crashes for the Ubuntu GNOME flavour.

Copyright (C) 2013 Canonical Ltd.
Author: Martin Pitt <martin.pitt@ubuntu.com>

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
the full text of the license.
"""

# pylint: disable=invalid-name
# pylint: enable=invalid-name


def add_info(report, unused_ui):
    """Handle bugs and crashes for the Ubuntu GNOME flavour."""
    release = report.get("DistroRelease", "")

    msg = (
        "The GNOME3 PPA you are using is no longer supported"
        " for this Ubuntu release. Please "
    )
    # redirect reports against PPA packages to ubuntu-gnome project
    if "[origin: LP-PPA-gnome3-team-gnome3" in report.get("Package", ""):
        report[
            "CrashDB"
        ] = """\
{
    "impl": "launchpad",
    "project": "ubuntu-gnome",
    "bug_pattern_url": "http://people.canonical.com/"
    "~ubuntu-archive/bugpatterns/bugpatterns.xml",
    "dupdb_url": "http://phillw.net/ubuntu-gnome/apport_duplicates/",
}
"""

        # using the staging PPA?
        if "LP-PPA-gnome3-team-gnome3-staging" in report.get("Package", ""):
            report.setdefault("Tags", "")
            report["Tags"] += " gnome3-staging"
            if release in {"Ubuntu 14.04", "Ubuntu 16.04"}:
                report["UnreportableReason"] = (
                    f'{msg} run "ppa-purge ppa:gnome3-team/gnome3-staging".'
                )

        # using the next PPA?
        elif "LP-PPA-gnome3-team-gnome3-next" in report.get("Package", ""):
            report.setdefault("Tags", "")
            report["Tags"] += " gnome3-next"
            if release in {"Ubuntu 14.04", "Ubuntu 16.04"}:
                report["UnreportableReason"] = (
                    f'{msg} run "ppa-purge ppa:gnome3-team/gnome3-next".'
                )

        elif release in {"Ubuntu 14.04", "Ubuntu 16.04"}:
            report["UnreportableReason"] = (
                f'{msg} run "ppa-purge ppa:gnome3-team/gnome3".'
            )

    if "[origin: LP-PPA-gnome3-team-gnome3" in report.get("Dependencies", ""):
        report.setdefault("Tags", "")
        report["Tags"] += " gnome3-ppa"
        if (
            release in {"Ubuntu 14.04", "Ubuntu 16.04"}
            and "UnreportableReason" not in report
        ):
            report["UnreportableReason"] = f"{msg} use ppa-purge to remove the PPA."
