summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-28 08:31:36 +0000
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-28 08:31:36 +0000
commitecaa3db2c44c2632ca273316a447aa83994f86ed (patch)
tree7323f256c1722c83cf3e8970204997a3ebc99b62 /contrib
parent8355460456181b965656a29b200d6e85c3134a91 (diff)
Add mark_spam.py script
* mark_spam.py: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238809 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ChangeLog4
-rw-r--r--contrib/mark_spam.py86
2 files changed, 90 insertions, 0 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index aff5df803141..10f13f348249 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2016-07-28 Martin Liska <mliska@suse.cz>
+
+ * mark_spam.py: New file.
+
2016-07-21 Martin Liska <mliska@suse.cz>
* analyze_brprob.py: If there's no loop, do not calculate
diff --git a/contrib/mark_spam.py b/contrib/mark_spam.py
new file mode 100644
index 000000000000..cc394dcb7428
--- /dev/null
+++ b/contrib/mark_spam.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+#
+# Script to mark bunch of PRs as spam
+#
+# This file is part of GCC.
+#
+# GCC 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, or (at your option) any later
+# version.
+#
+# GCC 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>. */
+#
+#
+#
+
+import requests
+import json
+import argparse
+
+base_url = 'https://gcc.gnu.org/bugzilla/rest.cgi/'
+
+def mark_as_spam(id, api_key, verbose):
+ print('Marking as spam: PR%d' % id)
+ # 1) get bug info to find 'cc'
+ u = base_url + 'bug/' + str(id)
+ r = requests.get(u)
+ response = json.loads(r.text)
+
+ # 2) mark the bug as spam
+ cc_list = response['bugs'][0]['cc']
+ data = {
+ 'status': 'RESOLVED',
+ 'resolution': 'INVALID',
+ 'summary': 'spam',
+ 'ids': [id],
+ 'api_key': api_key,
+ 'comment': { 'comment': 'spam'},
+ 'product': 'gcc',
+ 'component': 'spam',
+ 'version': 'unknown',
+ 'cc': {'remove': cc_list},
+ 'priority': 'P5',
+ 'severity': 'trivial',
+ 'assigned_to': 'unassigned@gcc.gnu.org' }
+
+ r = requests.put(u, json = data)
+ if verbose:
+ print(r)
+ print(r.text)
+
+ # 3) mark the first comment as spam
+ r = requests.get(u + '/comment')
+ response = json.loads(r.text)
+ comment_id = response['bugs'][str(id)]['comments'][0]['id']
+
+ u2 = '%sbug/comment/%d/tags' % (base_url, comment_id)
+ r = requests.put(u2, json = {'comment_id': comment_id, 'add': ['spam'], 'api_key': api_key})
+ if verbose:
+ print(r)
+ print(r.text)
+
+parser = argparse.ArgumentParser(description='Mark Bugzilla issues as spam.')
+parser.add_argument('api_key', help = 'API key')
+parser.add_argument('range', help = 'Range of IDs, e.g. 10-23,24,25,27')
+parser.add_argument('--verbose', action = 'store_true', help = 'Verbose logging')
+
+args = parser.parse_args()
+
+chunks = args.range.split(',')
+for c in chunks:
+ parts = list(map(lambda x: int(x), c.split('-')))
+ if len(parts) == 1:
+ r = [parts[0]]
+ else:
+ r = range(parts[0], parts[1] + 1)
+
+ for id in r:
+ mark_as_spam(id, args.api_key, args.verbose)