openclonk/tools/remove_unused_strings.py

55 lines
1.4 KiB
Python

import os
import os.path
import glob
def search_all_files_in_directory_for_phrase(parentdir, searchphrase, exclude_files):
for dirname, dirnames, filenames in os.walk(parentdir):
for filename in filenames:
fullfilename = os.path.normpath(os.path.join(dirname, filename))
if fullfilename in exclude_files:
continue
with open(fullfilename, "r") as searchfile:
for line in searchfile:
if searchphrase in line:
return True
return False
language_files = glob.glob(os.path.normpath("../planet/System.ocg/Language??.txt"))
for language_file in language_files:
print language_file
fout = open( language_file + "new" , "w")
with open(language_file,"r") as file:
lineno = 0
unused = []
for line in file:
lineno+=1
print "Checking line " + str(lineno) + "\r",
keyvalue = line.split("=")
if len(keyvalue) < 2:
continue
key = keyvalue[0].strip()
findkey = key.rstrip("0123456789")
if not search_all_files_in_directory_for_phrase(os.path.normpath("../src"),findkey,language_files):
#and not search_all_files_in_directory_for_phrase(os.path.normpath("../planet"),findkey,language_files):
unused.append(key)
else:
fout.write(line)
fout.flush()
print "removing "
for field in unused:
print " "+field
fout.close()
os.remove(language_file)
os.rename(language_file + "new",language_file)