mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-06-01 20:34:25 +00:00
[all] update refresh-copyright to handle UTF BOM markers
This commit is contained in:
@@ -12,6 +12,8 @@ EXTENSIONS = ('.c', '.cpp', '.h', '.nsi', '.rc')
|
||||
START_YEAR = 2017
|
||||
CURRENT_YEAR = datetime.date.today().year
|
||||
|
||||
UTF8_BOM = '\ufeff'
|
||||
|
||||
reignore = re.compile('^vendor/|.*/shader/|.*/d3d12.h$')
|
||||
recopyright = re.compile(r'\A/\*.*?\*/\s+', re.DOTALL)
|
||||
|
||||
@@ -36,6 +38,24 @@ with this program; if not, write to the Free Software Foundation, Inc., 59
|
||||
Temple Place, Suite 330, Boston, MA 02111-1307 USA''']
|
||||
|
||||
|
||||
def read_utf8_preserve_bom(file):
|
||||
with open(file, encoding='utf-8') as f:
|
||||
data = f.read()
|
||||
|
||||
has_bom = data.startswith(UTF8_BOM)
|
||||
if has_bom:
|
||||
data = data[len(UTF8_BOM):]
|
||||
|
||||
return data, has_bom
|
||||
|
||||
|
||||
def write_utf8_preserve_bom(file, data, has_bom):
|
||||
with open(file, 'w', encoding='utf-8') as f:
|
||||
if has_bom:
|
||||
f.write(UTF8_BOM)
|
||||
f.write(data)
|
||||
|
||||
|
||||
def make_comment_block():
|
||||
lines = ['/**']
|
||||
lines += [' * ' + line for line in header]
|
||||
@@ -59,11 +79,11 @@ def gen_c_literal():
|
||||
|
||||
def update_c_style(file, copyright):
|
||||
print(f'Updating copyright for {file}...')
|
||||
with open(file, encoding='utf-8') as f:
|
||||
data = recopyright.sub('', f.read())
|
||||
with open(file, 'w', encoding='utf-8') as f:
|
||||
f.write(copyright)
|
||||
f.write(data)
|
||||
|
||||
data, has_bom = read_utf8_preserve_bom(file)
|
||||
data = recopyright.sub('', data)
|
||||
|
||||
write_utf8_preserve_bom(file, copyright + data, has_bom)
|
||||
|
||||
|
||||
def update_config_c(file):
|
||||
@@ -73,8 +93,9 @@ def update_config_c(file):
|
||||
|
||||
print(f'Refresh embedded copyright string in {file}...')
|
||||
|
||||
with open(file, encoding='utf-8') as f:
|
||||
for line in f:
|
||||
data, has_bom = read_utf8_preserve_bom(file)
|
||||
|
||||
for line in data.splitlines(keepends=True):
|
||||
if '// BEGIN LICENSE BLOCK' in line:
|
||||
prefix.append(line)
|
||||
current = []
|
||||
@@ -84,10 +105,8 @@ def update_config_c(file):
|
||||
else:
|
||||
current.append(line)
|
||||
|
||||
with open(file, 'w', encoding='utf-8') as f:
|
||||
f.writelines(prefix)
|
||||
f.write(gen_c_literal())
|
||||
f.writelines(suffix)
|
||||
data = ''.join(prefix) + gen_c_literal() + ''.join(suffix)
|
||||
write_utf8_preserve_bom(file, data, has_bom)
|
||||
|
||||
|
||||
def appstring_license():
|
||||
@@ -105,31 +124,36 @@ def appstring_license():
|
||||
|
||||
def update_appstrings(file):
|
||||
print(f'Refresh app string in {file}...')
|
||||
lines = []
|
||||
|
||||
with open(file, encoding='utf-8') as f:
|
||||
f = iter(f)
|
||||
data, has_bom = read_utf8_preserve_bom(file)
|
||||
|
||||
lines = []
|
||||
f = iter(data.splitlines(keepends=True))
|
||||
|
||||
for line in f:
|
||||
lines.append(line)
|
||||
|
||||
if 'LG_COPYRIGHT_STR' in line:
|
||||
next(f)
|
||||
lines.append(f' "{copyright}";\n')
|
||||
|
||||
elif 'LG_WEBSITE_STR' in line:
|
||||
next(f)
|
||||
lines.append(f' "{project_url}";\n')
|
||||
|
||||
elif 'LG_LICENSE_STR' in line:
|
||||
lines += [f'{line}\n' for line in appstring_license()]
|
||||
for line in f:
|
||||
if '";' in line:
|
||||
break
|
||||
|
||||
with open(file, 'w', encoding='utf-8') as f:
|
||||
f.writelines(lines)
|
||||
write_utf8_preserve_bom(file, ''.join(lines), has_bom)
|
||||
|
||||
|
||||
def main():
|
||||
comment_block = make_comment_block()
|
||||
files = subprocess.check_output(['git', '-C', PROJECT, 'ls-files', '-z']).decode('utf-8').split('\0')
|
||||
|
||||
for file in files:
|
||||
if reignore.match(file):
|
||||
continue
|
||||
@@ -139,5 +163,6 @@ def main():
|
||||
update_config_c(os.path.join(PROJECT, 'client', 'src', 'config.c'))
|
||||
update_appstrings(os.path.join(PROJECT, 'common', 'src', 'appstrings.c'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user