-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
83 lines (62 loc) · 2.13 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# -*- coding: utf-8 -*-
"""
jira2github.utils
~~~~~~~~~
utilities
:copyright: ahsky2@gmail.com
:license: GPL V3 license.
"""
import re
from github import UnknownObjectException
from enum import Enum
import random
import config
class JiraAttr(Enum):
TYPE = 1
STATUS = 2
USER = 3
class GithubAttr(Enum):
LABEL = 1
STATE = 2
LOGIN = 3
def convert(val, jira_attr, github_attr):
if jira_attr == JiraAttr.TYPE and github_attr == GithubAttr.LABEL:
return config.JIRA_ISSUE_TYPE_TO_GITHUB_ISSUE_LABEL[val]
elif jira_attr == JiraAttr.STATUS and github_attr == GithubAttr.LABEL:
return config.JIRA_ISSUE_STATUS_TO_GITHUB_ISSUE_LABEL[val]
elif jira_attr == JiraAttr.STATUS and github_attr == GithubAttr.STATE:
return config.JIRA_ISSUE_STATUS_TO_GITHUB_ISSUE_STATE[val]
elif jira_attr == JiraAttr.USER and github_attr == GithubAttr.LOGIN:
return config.JIRA_USER_TO_GITHUB_LOGIN[val]
def random_color():
r = lambda: random.randint(0, 255)
return '%02X%02X%02X' % (r(), r(), r())
def create_label(label, github_repo):
github_label = None
try:
github_label = github_repo.get_label(label)
# print 'already label {} exists'.format(github_label.name)
except UnknownObjectException:
github_label = github_repo.create_label(label, random_color())
print 'create label {}'.format(github_label.name)
return github_label
def gen_comment(jira_comment):
comment = u'''{}
> Written by @{}
> Created at {}'''
return comment.format(j2m(jira_comment.body),
convert(jira_comment.author, JiraAttr.USER, GithubAttr.LOGIN),
jira_comment.created)
def gen_body(jira_issue):
body = u'''{}
> Written by @{}
> Created at {}
> Link to {}{}'''
return body.format(j2m(jira_issue.description),
convert(jira_issue.creator, JiraAttr.USER, GithubAttr.LOGIN),
jira_issue.created,
config.JIRA_ISSUE_LINK_BASE,
jira_issue.key)
def j2m(c):
c = re.sub(r'{code:?(.*)}', r'```\1', c)
return c