Bugtracker: Update GitLab tracker.

This commit is contained in:
Krytarik Raido 2020-03-30 05:17:04 +02:00
parent 66b5eee7f5
commit cbca12caec
2 changed files with 15 additions and 10 deletions

View File

@ -24,7 +24,7 @@ import supybot.world as world
from imp import reload
__version__ = "3.7.0"
__version__ = "3.8.0"
__author__ = supybot.Author("Krytarik Raido", "krytarik", "krytarik@tuxgarage.com")
__contributors__ = {
supybot.Author("Dennis Kaarsemaker", "Seveas", "dennis@kaarsemaker.net"): ['Original Author'],

View File

@ -524,10 +524,15 @@ class Bugtracker(callbacks.PluginRegexp):
tracker = SourceForge().get_tracker(snarfurl)
elif 'github.com' in snarfurl:
tracker = GitHub().get_tracker(snarfurl)
elif re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/(issues|pulls|merge_requests)', snarfurl):
elif re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/-/(issues|merge_requests)', snarfurl) \
or re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/merge_requests', snarfurl):
tracker = GitLab().get_tracker(snarfurl, bugid)
elif re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/issues', snarfurl):
tracker = GitLab().get_tracker(snarfurl, bugid)
if not tracker:
tracker = Gitea().get_tracker(snarfurl, bugid)
elif re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/pulls', snarfurl):
tracker = Gitea().get_tracker(snarfurl, bugid)
elif 'view.php' in snarfurl:
tracker = Mantis().get_tracker(snarfurl)
elif '/ticket/' in snarfurl:
@ -968,12 +973,12 @@ class GitHub(IBugtracker):
class GitLab(IBugtracker):
def get_tracker(self, url, id):
try:
match = re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/(issues|merge_requests)', url)
match = re.match(r'[^\s/]+/[^\s/]+/[^\s/]+/(-/)?(issues|merge_requests)', url)
desc = match.group(0)
name = desc.lower()
url = 'https://%s' % desc
bugurl = "%s/%d" % (re.sub(r'(://[^\s/]+)/([^\s/]+)/([^\s/]+)',
r'\g<1>/api/v4/projects/\g<2>%2F\g<3>', url), id)
bugurl = "%s/%d" % (re.sub(r'(://[^\s/]+)/([^\s/]+)/([^\s/]+)/(-/)?',
r'\g<1>/api/v4/projects/\g<2>%2F\g<3>/', url), id)
bugjson = utils.web.getUrl(bugurl)
bug = json.loads(bugjson.decode('utf-8'))
return GitLab(name, url, desc, 'gitlab')
@ -981,15 +986,15 @@ class GitLab(IBugtracker):
pass
def get_bug(self, id):
url = "%s/%d" % (re.sub(r'(://[^\s/]+)/([^\s/]+)/([^\s/]+)',
r'\g<1>/api/v4/projects/\g<2>%2F\g<3>', self.url), id)
url = "%s/%d" % (re.sub(r'(://[^\s/]+)/([^\s/]+)/([^\s/]+)/(-/)?',
r'\g<1>/api/v4/projects/\g<2>%2F\g<3>/', self.url), id)
try:
bugjson = utils.web.getUrl(url)
bug = json.loads(bugjson.decode('utf-8'))
except Exception as e:
raise BugtrackerError(self.errget % (self.description, e, url))
try:
product = '/'.join(self.url.split('/')[-3:-1])
product = '/'.join(self.url.split('/')[3:5])
status = bug['state']
if bug['assignees']:
assino = len(bug['assignees'])
@ -1010,7 +1015,7 @@ class Gitea(IBugtracker):
desc = match.group(0)
name = desc.lower()
url = 'https://%s' % desc
bugurl = '%s/%d' % (re.sub(r'://[^\s/]+/', r'\g<0>api/v1/repos/', url), id)
bugurl = '%s/%d' % (re.sub(r'(://[^\s/]+)/', r'\g<1>/api/v1/repos/', url), id)
bugjson = utils.web.getUrl(bugurl)
bug = json.loads(bugjson.decode('utf-8'))
return Gitea(name, url, desc, 'gitea')
@ -1018,7 +1023,7 @@ class Gitea(IBugtracker):
pass
def get_bug(self, id):
url = "%s/%d" % (re.sub(r'://[^\s/]+/', r'\g<0>api/v1/repos/', self.url), id)
url = "%s/%d" % (re.sub(r'(://[^\s/]+)/', r'\g<1>/api/v1/repos/', self.url), id)
try:
bugjson = utils.web.getUrl(url)
bug = json.loads(bugjson.decode('utf-8'))