-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathis_pull_request.py
More file actions
92 lines (71 loc) · 2.49 KB
/
is_pull_request.py
File metadata and controls
92 lines (71 loc) · 2.49 KB
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
84
85
86
87
88
89
90
91
92
'''
Created on Aug. 14, 2019
@author: KJNETHER
going to receive a Github context that was generated by an github action
Evaluates it to determine if this action is part of a pullrequest that has been
merged and closed.
'''
import json
import pprint
import sys
import requests
class GitHubAPIWrapper(object):
def __init__(self, github_context):
self.github_context = json.loads(github_context)
self.pp = pprint.PrettyPrinter(indent=4)
#self.pp.pprint(self.github_context)
def get_after_sha(self):
'''
:return: The sha of the commit that is associated with the after event
in github.
'''
return self.github_context['event']['after']
def get_sha(self):
return self.github_context['sha']
def get_events(self):
url = self.github_context['event']['repository']['events_url']
resp = requests.get(url)
data = resp.json()
return data
def get_pr_events(self):
events = self.get_events()
pr_events = []
for event in events:
if event['type'] == 'PullRequestEvent':
pr_events.append(event)
return pr_events
def get_pr_events_closed(self):
pr_events = self.get_pr_events()
closed_pr = []
for event in pr_events:
if event['payload']['action'] == 'closed':
closed_pr.append(event)
return closed_pr
def get_pr_event_for_context(self):
pr_events = self.get_pr_events()
sha = self.get_sha()
event = None
for pr_event in pr_events:
pr_event['payload']['action']
if sha == pr_event['payload']['pull_request']['merge_commit_sha']:
event = pr_event
break
#self.pp.pprint(event)
return event
def is_context_a_closed_pr(self):
event = self.get_pr_event_for_context()
retVal = True
if event is None:
retVal = False
return retVal
if __name__ == '__main__':
# dev
#context_file = 'gha_context.json'
context_file = sys.argv[1]
fh = open('gha_context.json', 'r')
jsontxt = fh.read()
fh.close()
gha = GitHubAPIWrapper(jsontxt)
gha.get_pr_event_for_context()
is_pr_closed = gha.is_context_a_closed_pr()
print(is_pr_closed)