Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 May 2018 18:57:34 +0000 (UTC)
From:      Sofian Brabez <sbz@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r470568 - head/Tools/scripts
Message-ID:  <201805211857.w4LIvY5P041251@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sbz
Date: Mon May 21 18:57:34 2018
New Revision: 470568
URL: https://svnweb.freebsd.org/changeset/ports/470568

Log:
  - Do not download obsolete attachments
  
  Submitted by:		gonzo
  Approved by:		myself
  Differential Revision:	https://reviews.freebsd.org/D14550

Modified:
  head/Tools/scripts/getpatch

Modified: head/Tools/scripts/getpatch
==============================================================================
--- head/Tools/scripts/getpatch	Mon May 21 18:00:07 2018	(r470567)
+++ head/Tools/scripts/getpatch	Mon May 21 18:57:34 2018	(r470568)
@@ -134,6 +134,8 @@ class BzGetPatch(GetPatch):
 
     URL_BASE = 'https://bugs.freebsd.org/bugzilla/'
     URL_SHOW = '{}/show_bug.cgi?id='.format(URL_BASE)
+    REGEX_ATTACHMENTS_TABLE = r'<table id="attachment_table">(.*?)</table>'
+    REGEX_ATTACHMENT_TR = r'(<tr id="a\d+"[^<]+>.*?</tr>)'
     REGEX_URL = r'<a href="([^<]+)">Details</a>'
     REGEX = r'<div class="details">([^ ]+) \(text/plain(?:; charset=[-\w]+)?\)'
 
@@ -147,8 +149,7 @@ class BzGetPatch(GetPatch):
             return None
         return match.group(1)
 
-    def _get_patch_urls(self, data):
-        patch_urls = {}
+    def _get_patch_url(self, data):
         for url in re.findall(self.REGEX_URL, str(data)):
             url = '{}{}'.format(self.URL_BASE, url)
             file_name = self._get_patch_name(url)
@@ -158,7 +159,20 @@ class BzGetPatch(GetPatch):
                 self.out(msg.format(url))
                 continue
             download_url = url[:url.find('&')]
+            return download_url, file_name
+
+    def _get_patch_urls(self, data):
+        patch_urls = {}
+        match = re.search(self.REGEX_ATTACHMENTS_TABLE, str(data), re.DOTALL)
+        if match is None:
+            return patch_urls
+        table = match.group(1)
+        for tr in re.findall(self.REGEX_ATTACHMENT_TR, str(data), re.DOTALL):
+            if (tr.find('bz_tr_obsolete') >= 0):
+                continue
+            download_url, file_name = self._get_patch_url(tr)
             patch_urls[download_url] = file_name
+
         return patch_urls
 
     def fetch(self, *largs, **kwargs):



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805211857.w4LIvY5P041251>