-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdateQualitySettings.py
More file actions
86 lines (73 loc) · 3.2 KB
/
updateQualitySettings.py
File metadata and controls
86 lines (73 loc) · 3.2 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
import requests
import json
import time
import argparse
def listRepositories(baseurl, provider, organization, token):
hasNextPage = True
cursor = ''
result = []
headers = {
'Accept': 'application/json',
'api-token': token
}
while hasNextPage:
url = '%s/api/v3/organizations/%s/%s/repositories?limit=100&%s' % (
baseurl, provider, organization,cursor)
r = requests.get(url, headers=headers)
repositories = json.loads(r.text)
for repository in repositories['data']:
result.append(
{
'name': repository['name']
}
)
hasNextPage = 'cursor' in repositories['pagination']
if hasNextPage:
cursor = 'cursor=%s' % repositories['pagination']['cursor']
return result
def updateQualitySettings(provider,orgname,reponame,gitAction,apiToken):
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'api-token': apiToken
}
data = {
"issueThreshold": {
"threshold": 0,
"minimumSeverity": "Warning"
},
"securityIssueThreshold": 0
}
response = requests.put(f'https://app.codacy.com/api/v3/organizations/{provider}/{orgname}/repositories/{reponame}/settings/quality/{gitAction}',
headers = headers,json=data)
print(gitAction,"-> status:",response.status_code)
def main():
print('\nWelcome to Codacy!')
parser = argparse.ArgumentParser(description='Codacy Security Report')
parser.add_argument('--baseurl', dest='baseurl', default='https://app.codacy.com',
help='codacy server address (ignore if you use cloud)')
parser.add_argument('--provider', dest='provider', default=None,
help='git provider (gh|gl|bb|ghe|gle|bbe')
parser.add_argument('--organization', dest='organization',default=None,
help='organization name')
parser.add_argument('--apiToken', dest='apiToken', default=None,
help='the api-token to be used on the REST API')
parser.add_argument('--reponame', dest='reponame', default=None,
help='comma separated list of the repositories to be updated, none means all')
args = parser.parse_args()
print("\nScript is running... take a coffee and enjoy!\n")
startdate = time.time()
repositories = listRepositories(args.baseurl, args.provider, args.organization, args.apiToken)
allRepos = (args.reponame == None)
targetRepos = []
if not allRepos:
targetRepos = args.reponame.split(',')
for repo in repositories:
if allRepos or repo['name'] in targetRepos:
print("Updating Quality Settings for PR in",repo['name'])
#uncomment the following line if you want to update the quality settings for the commits
#updateQualitySettings(args.provider,args.organization,repo['name'],'commits',args.apiToken)
updateQualitySettings(args.provider,args.organization,repo['name'],'pull-requests',args.apiToken)
enddate = time.time()
print("\nThe script took ",round(enddate-startdate,2)," seconds")
main()