-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathreparo.py
116 lines (90 loc) · 2.9 KB
/
reparo.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019 CHAOSS
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Authors:
# Venu Vardhan Reddy Tekula <[email protected]>
#
import requests
import json
import os
from string import Template
years = "2015-2020"
owner = "Bitergia"
def getlistoffiles(dirname):
listoffile = os.listdir(dirname)
allfiles = list()
for entry in listoffile:
fullpath = os.path.join(dirname, entry)
if os.path.isdir(fullpath):
allfiles = allfiles+getlistoffiles(fullpath)
else:
allfiles.append(fullpath)
return(allfiles)
REPO = input("repo name: ")
dirname = input("path to repo: ")
listoffiles = getlistoffiles(dirname)
FILES = []
for f in listoffiles:
count = 0
try:
for line in open(f):
if "Copyright (C)" and "Authors" in line:
count = count+1
if(count > 0):
FILES.append(f)
except UnicodeDecodeError:
pass
for items2 in FILES:
PATH_TO_FILE2 = items2.replace(dirname, '')
PATH_TO_FILE = PATH_TO_FILE2.strip('/')
CHAOSS_HTTP = "https://api.github.com/repos/chaoss/"
data = requests.get(CHAOSS_HTTP + REPO + "/commits?path=" + PATH_TO_FILE)
data = json.loads(data.content)
authors_data = {}
try:
for item in reversed(data):
data = item['commit']['author']
if data['name'] not in authors_data.keys():
authors_data[data['name']] = data['email']
except TypeError:
pass
authors = [key + " <" + value + ">" for key, value in authors_data.items()]
authors.append('')
# print(authors)
template_file = open("gpl-v3.tmpl")
src = Template(template_file.read())
sub_dict = {
'years': years,
'owner': owner,
'authors': '\n# '.join(authors)
}
result = src.substitute(sub_dict)
with open(items2, 'r') as f:
contents = f.readlines()
i = 0
for item in contents:
if item.startswith('#'):
i += 1
with open(items2, 'w') as f:
f.writelines(contents[i:])
with open(items2, 'r') as f:
contents = f.readlines()
contents.insert(0, result+"\n")
with open(items2, 'w') as f:
contents = "".join(contents)
f.write(contents)