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 ""
n=1 def get_git_date(file_path):
for folder in FOLDERS: d = subprocess.run(CMD_GIT_DATE + [file_path],
for extension in EXTENSIONS: stdout=subprocess.PIPE,
for file_path in os.popen(CMD_LIST_FILES % (folder, extension)): check=True,
file_path = os.getcwd() + file_path[1:-1] universal_newlines=True).stdout
if file_path.endswith(extension): # yyyy-mm-dd
git_date = get_git_date(file_path) return d.split('-')[0]
if str(year) == git_date:
# Only update if current year is not found
if REGEX_CURRENT.search(open(file_path, "r").read()) is None: def skip_file(file_path):
print n,"Last git edit", git_date, "-", file_path for ext in EXTENSIONS:
os.popen(CMD_REGEX % (year,file_path)) 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
for folder in FOLDERS:
for file_path in subprocess.run(
CMD_GIT_LIST_FILES + [folder],
stdout=subprocess.PIPE,
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)
if not year == git_date:
# print(file_path, year, "(skip)")
continue
if regex_current.search(open(file_path, "r").read()) is not None:
# 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