From 8fe22fbbb617c8d47818c671184fb591a8bd6ef6 Mon Sep 17 00:00:00 2001 From: Dan Streetman Date: Fri, 19 Nov 2021 16:14:16 -0500 Subject: [PATCH] Remove hugdaylist script The last email announcing a 'hug day' appears to have been over 5 years ago, and the hugdaylist script doesn't seem to work right anymore anyway. This also removes ubuntutools/lp/libsupport, which has no functions used by anything else. --- debian/control | 1 - debian/copyright | 3 - doc/hugdaylist.1 | 26 ------- hugdaylist | 141 ----------------------------------- setup.py | 1 - ubuntutools/lp/libsupport.py | 50 ------------- 6 files changed, 222 deletions(-) delete mode 100644 doc/hugdaylist.1 delete mode 100755 hugdaylist delete mode 100644 ubuntutools/lp/libsupport.py diff --git a/debian/control b/debian/control index ff0ad61..3c03156 100644 --- a/debian/control +++ b/debian/control @@ -90,7 +90,6 @@ Description: useful tools for Ubuntu developers - dch-repeat - used to repeat a change log into an older release. - grab-merge - grabs a merge from merges.ubuntu.com easily. - grep-merges - search for pending merges from Debian. - - hugdaylist - compile HugDay lists from bug list URLs. - import-bug-from-debian - copy a bug from the Debian BTS to Launchpad - merge-changelog - manually merges two Debian changelogs with the same base version. diff --git a/debian/copyright b/debian/copyright index 9db0196..42d84fc 100644 --- a/debian/copyright +++ b/debian/copyright @@ -72,13 +72,11 @@ License: GPL-2+ Files: doc/bitesize.1 doc/grab-merge.1 - doc/hugdaylist.1 doc/merge-changelog.1 doc/setup-packaging-environment.1 doc/syncpackage.1 bitesize grab-merge - hugdaylist merge-changelog setup-packaging-environment syncpackage @@ -109,7 +107,6 @@ Files: dch-repeat grep-merges mk-sbuild ubuntu-build - ubuntutools/lp/libsupport.py ubuntutools/lp/lpapicache.py ubuntutools/misc.py Copyright: 2007-2010, Canonical Ltd. diff --git a/doc/hugdaylist.1 b/doc/hugdaylist.1 deleted file mode 100644 index 71d0b9a..0000000 --- a/doc/hugdaylist.1 +++ /dev/null @@ -1,26 +0,0 @@ -.TH HUGDAYLIST "1" "August 27, 2008" "ubuntu-dev-tools" - -.SH NAME -hugdaylist \- produce MoinMoin wiki formatted tables based on a Launchpad bug list - -.SH SYNOPSIS -.B hugdaylist [\fB\-n\fP|\fB\-\-number \fP] \fBlaunchpad-buglist-url\fP - -.SH DESCRIPTION -\fBhugdaylist\fP produces MoinMoin wiki formatted tables based on a -Launchpad bug list - -.SH OPTIONS -.TP -\fB\-\-number=\fP -This option allows you to specify the number of entries to output. -.TP -\fBlaunchpad-buglist-url\fP -Required, this option is a URL pointing to a launchpad bug list. - -.SH AUTHOR -\fBhugdaylist\fP has been written by Canonical Ltd., Daniel Holbach - and Jonathan Patrick Davies . -This manual page was written by Ryan Kavanagh . -.PP -Both are released under the GNU General Public License, version 3. diff --git a/hugdaylist b/hugdaylist deleted file mode 100755 index ef33523..0000000 --- a/hugdaylist +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -# Copyright (C) 2007 Canonical Ltd., Daniel Holbach -# Copyright (C) 2008 Jonathan Patrick Davies -# -# ################################################################## -# -# 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; version 3. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# See file /usr/share/common-licenses/GPL-3 for more details. -# -# ################################################################## -# -# -# hugdaylist - produces MoinMoin wiki formatted tables based on a Launchpad bug -# list. -# -# hugdaylist -# - produces lists like https://wiki.ubuntu.com/UbuntuBugDay/20070912?action=raw -# -# hugdaylist -n -# - will only list URLs. - -import sys -from optparse import OptionParser - -from launchpadlib.launchpad import Launchpad - -from ubuntutools.lp.libsupport import translate_web_api - -from ubuntutools import getLogger -Logger = getLogger() - - -def check_args(): - howmany = -1 - url = "" - - # Our usage options. - usage = "usage: %prog [-n ] launchpad-buglist-url" - opt_parser = OptionParser(usage) - - # Options - namely just the number of bugs to output. - opt_parser.add_option("-n", "--number", type="int", - dest="number", help="Number of entries to output.") - - # Parse arguments. - (options, args) = opt_parser.parse_args() - - # Check if we want a number other than the default. - howmany = options.number - - # Check that we have an URL. - if not args: - Logger.error("An URL pointing to a Launchpad bug list is required.") - opt_parser.print_help() - sys.exit(1) - else: - url = args[0] - - return (howmany, url) - - -def filter_unsolved(task): - # TODO: don't use this filter here, only check status and assignee of - # the given task - # Filter out special types of bugs: - # - https://wiki.ubuntu.com/Bugs/HowToTriage#Special%20types%20of%20bugs - # this is expensive, parse name out of self_link instead? - subscriptions = set(s.person.name for s in task.bug.subscriptions) - if (task.status != "Fix Committed" and - (not task.assignee or task.assignee.name in ['motu', 'desktop-bugs']) and - 'ubuntu-sponsors' not in subscriptions and - 'ubuntu-archive' not in subscriptions): - return True - return False - - -def main(): - (howmany, url) = check_args() - if len(url.split("?", 1)) == 2: - # search options not supported, because there is no mapping web ui - # options <-> API options - Logger.error("Options in url are not supported, url: %s" % url) - sys.exit(1) - - launchpad = None - try: - launchpad = Launchpad.login_with("ubuntu-dev-tools", 'production') - except IOError as error: - Logger.exception(error) - sys.exit(1) - - api_url = translate_web_api(url, launchpad) - try: - product = launchpad.load(api_url) - except Exception as error: - response = getattr(error, "response", {}) - if response.get("status", None) == "404": - Logger.error("The URL at '%s' does not appear to be a " - "valid url to a product" % url) - sys.exit(1) - else: - raise - - bug_list = [b for b in product.searchTasks() if filter_unsolved(b)] - - if not bug_list: - Logger.info("Bug list of %s is empty." % url) - sys.exit(0) - if howmany == -1: - howmany = len(bug_list) - - Logger.info(""" -## || This task is done || somebody || || -## || This task is assigned || somebody || || -## || This task isn't || ... || || -## || This task is blocked on something || somebody || || - -|| Bug || Subject || Triager ||""") - - for i in list(bug_list)[:howmany]: - bug = i.bug - Logger.info('|| [%s %s] || %s || ||' % - (bug.web_link, bug.id, bug.title)) - - -if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - Logger.error("Aborted.") - sys.exit(1) diff --git a/setup.py b/setup.py index 59b00c2..dd6e76a 100755 --- a/setup.py +++ b/setup.py @@ -21,7 +21,6 @@ scripts = [ 'dch-repeat', 'grab-merge', 'grep-merges', - 'hugdaylist', 'import-bug-from-debian', 'merge-changelog', 'mk-sbuild', diff --git a/ubuntutools/lp/libsupport.py b/ubuntutools/lp/libsupport.py deleted file mode 100644 index 24b1d3c..0000000 --- a/ubuntutools/lp/libsupport.py +++ /dev/null @@ -1,50 +0,0 @@ -# -# libsupport.py - functions which add launchpadlib support to the Ubuntu -# Developer Tools package. -# -# Copyright (C) 2009 Markus Korn -# -# 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 3 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Please see the /usr/share/common-licenses/GPL file for the full text of -# the GNU General Public License license. -# - -from urllib.parse import urlsplit, urlencode, urlunsplit - - -def query_to_dict(query_string): - result = dict() - options = filter(None, query_string.split("&")) - for opt in options: - key, value = opt.split("=") - result.setdefault(key, set()).add(value) - return result - - -def translate_web_api(url, launchpad): - scheme, netloc, path, query, fragment = urlsplit(url) - query = query_to_dict(query) - - differences = set(netloc.split('.')).symmetric_difference( - set(launchpad._root_uri.host.split('.'))) - if ('staging' in differences or 'edge' in differences): - raise ValueError("url conflict (url: %s, root: %s" % - (url, launchpad._root_uri)) - if path.endswith("/+bugs"): - path = path[:-6] - if "ws.op" in query: - raise ValueError("Invalid web url, url: %s" % url) - query["ws.op"] = "searchTasks" - scheme, netloc, api_path, _, _ = urlsplit(str(launchpad._root_uri)) - query = urlencode(query) - url = urlunsplit((scheme, netloc, api_path + path.lstrip("/"), query, fragment)) - return url