Merge #8621: [contrib] python: Don't use shell=True

fa994a7 contrib: Don't use shell=True (MarcoFalke)
This commit is contained in:
Wladimir J. van der Laan 2016-08-31 14:43:11 +02:00
commit e8ed6eb457
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python3
''' """
Run this script to update all the copyright headers of files Run this script to update all the copyright headers of files
that were changed this year. that were changed this year.
@ -10,37 +10,58 @@ For example:
it will change it to it will change it to
// Copyright (c) 2009-2015 The Bitcoin Core developers // Copyright (c) 2009-2015 The Bitcoin Core developers
''' """
import os import subprocess
import time import time
import re import re
year = time.gmtime()[0] CMD_GIT_LIST_FILES = ['git', 'ls-files']
CMD_GIT_DATE = 'git log --format=%%ad --date=short -1 %s | cut -d"-" -f 1' CMD_GIT_DATE = ['git', 'log', '--format=%ad', '--date=short', '-1']
CMD_REGEX= "perl -pi -e 's/(20\d\d)(?:-20\d\d)? The Bitcoin/$1-%s The Bitcoin/' %s" CMD_PERL_REGEX = ['perl', '-pi', '-e']
REGEX_CURRENT= re.compile("%s The Bitcoin" % year) REGEX_TEMPLATE = 's/(20\\d\\d)(?:-20\\d\\d)? The Bitcoin/$1-%s The Bitcoin/'
CMD_LIST_FILES= "find %s | grep %s"
FOLDERS = ["./qa", "./src"] FOLDERS = ["qa/", "src/"]
EXTENSIONS = [".cpp",".h", ".py"] EXTENSIONS = [".cpp",".h", ".py"]
def get_git_date(file_path):
r = os.popen(CMD_GIT_DATE % file_path)
for l in r:
# Result is one line, so just return
return l.replace("\n","")
return ""
def get_git_date(file_path):
d = subprocess.run(CMD_GIT_DATE + [file_path],
stdout=subprocess.PIPE,
check=True,
universal_newlines=True).stdout
# yyyy-mm-dd
return d.split('-')[0]
def skip_file(file_path):
for ext in EXTENSIONS:
if file_path.endswith(ext):
return False
else:
return True
if __name__ == "__main__":
year = str(time.gmtime()[0])
regex_current = re.compile("%s The Bitcoin" % year)
n = 1 n = 1
for folder in FOLDERS: for folder in FOLDERS:
for extension in EXTENSIONS: for file_path in subprocess.run(
for file_path in os.popen(CMD_LIST_FILES % (folder, extension)): CMD_GIT_LIST_FILES + [folder],
file_path = os.getcwd() + file_path[1:-1] stdout=subprocess.PIPE,
if file_path.endswith(extension): check=True,
universal_newlines=True
).stdout.split("\n"):
if skip_file(file_path):
# print(file_path, "(skip)")
continue
git_date = get_git_date(file_path) git_date = get_git_date(file_path)
if str(year) == git_date: if not year == git_date:
# Only update if current year is not found # print(file_path, year, "(skip)")
if REGEX_CURRENT.search(open(file_path, "r").read()) is None: continue
print n,"Last git edit", git_date, "-", file_path if regex_current.search(open(file_path, "r").read()) is not None:
os.popen(CMD_REGEX % (year,file_path)) # already up to date
# print(file_path, year, "(skip)")
continue
print(n, file_path, "(update to %s)" % year)
subprocess.run(CMD_PERL_REGEX + [REGEX_TEMPLATE % year, file_path], check=True)
n = n + 1 n = n + 1