build(fluentscan): style changes

This commit is contained in:
Observer KRypt0n_ 2023-04-18 16:55:06 +02:00
parent 7d14c65bbe
commit 4d1ed70e5b
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2

76
fluentscan.py Normal file → Executable file
View file

@ -8,29 +8,34 @@ import sys
import glob import glob
import re import re
valid_args=["diff","unused","missing"] valid_commands = ["diff", "unused", "missing"]
if len(sys.argv) < 3:
print(f"Command format: ./fluentscan.py [command] [locale]\nAvailable commands: {valid_commands}")
if len(sys.argv)<3 or len(sys.argv) == 0:
print("missing arguments")
sys.exit() sys.exit()
if sys.argv[2] not in valid_args: if sys.argv[1] not in valid_commands:
print(f"invalid argument:{sys.argv[2]}\n Valid arguments: {valid_args}") print(f"Invalid command \"{sys.argv[1]}\". Available commands: {valid_commands}")
sys.exit() sys.exit()
path = "assets/locales/" + sys.argv[1] + "/" path = "assets/locales/" + sys.argv[2] + "/"
try: try:
x=open(path+"/main.ftl","r") open(path + "/main.ftl", "r").close()
x.close()
except: except:
print(f"{path} does not exist") print(f"{path} does not exist")
sys.exit() sys.exit()
all_entries={} all_entries = {}
def dict_compare(d1, d2): def dict_compare(d1, d2):
d1_keys = set(d1.keys()) d1_keys = set(d1.keys())
d2_keys = set(d2.keys()) d2_keys = set(d2.keys())
shared_keys = d1_keys.intersection(d2_keys) shared_keys = d1_keys.intersection(d2_keys)
added = d1_keys - d2_keys added = d1_keys - d2_keys
@ -57,54 +62,61 @@ def to_dict(text):
return result return result
def get_line_num(text,pattern): def get_line_num(text,pattern):
line=1 line = 1
for i in text.split("\n"): for i in text.split("\n"):
if pattern in i: if pattern in i:
return line return line
line += 1 line += 1
for filename in os.listdir("assets/locales/en"): for filename in os.listdir("assets/locales/en"):
with open(os.path.join("assets/locales/en", filename), 'r') as locale_file: with open(os.path.join("assets/locales/en", filename), 'r') as locale_file:
created_locale = open(path + filename) created_locale = open(path + filename)
expected=to_dict(locale_file) expected = to_dict(locale_file)
expected2 = to_dict(created_locale)
all_entries.update(expected) all_entries.update(expected)
expected2=to_dict(created_locale)
added, removed, same = dict_compare(expected, expected2) added, removed, same = dict_compare(expected, expected2)
if sys.argv[2] == "unused" or sys.argv[2] == "missing":
files = glob.glob("src/" + '/**/*.rs', recursive=True) if sys.argv[1] == "unused" or sys.argv[1] == "missing":
used=[] files = glob.glob("src/**/*.rs", recursive=True)
vars={}
used = []
vars = {}
for i in files: for i in files:
with open(i,"r") as script: with open(i, "r") as script:
text=script.read() text = script.read()
if sys.argv[2] == "unused":
if sys.argv[1] == "unused":
for j in expected: for j in expected:
if '"'+j+'"' in text: if f"\"{j}\"" in text:
used.append(j) used.append(j)
elif sys.argv[2] == "missing":
elif sys.argv[1] == "missing":
for j in text.split(): for j in text.split():
# TODO: ignore comments # TODO: ignore comments
if 'tr("' in j: if 'tr("' in j:
index=j.find('tr("') index = j.find('tr("')
var_name=re.sub('[^\\w-]+', '',
j[index:].replace('tr("','') var_name = re.sub('[^\\w-]+', '', j[index:].replace('tr("', '').replace("Some", ""))
.replace("Some",""))
# TODO: index multiple matches # TODO: index multiple matches
vars[var_name] = [script.name, get_line_num(text,var_name)] vars[var_name] = [script.name, get_line_num(text,var_name)]
if sys.argv[2] == "unused": if sys.argv[1] == "unused":
for i in expected: for i in expected:
if i not in used: if i not in used:
print(f"[{locale_file.name}]\n" print(f"[{locale_file.name}]\n"
" [Unused]\n" " [Unused]\n"
f" {i}") f" {i}")
continue continue
if (added or removed or same) and sys.argv[2] == "diff": if (added or removed or same) and sys.argv[1] == "diff":
print(f"[{created_locale.name[15:]}]") print(f"[{created_locale.name[15:]}]")
if added: if added:
@ -128,10 +140,12 @@ for filename in os.listdir("assets/locales/en"):
print("") print("")
if sys.argv[2] == "missing": if sys.argv[1] == "missing":
added, removed, same = dict_compare(vars, all_entries) added, removed, same = dict_compare(vars, all_entries)
if not added: if not added:
print("nothing is missing") print("Nothing is missing")
for i in added: for i in added:
print(f"[{vars[i][0]}, line {vars[i][1]}]\n" print(f"[{vars[i][0]}, line {vars[i][1]}]\n"
" [Missing]\n" " [Missing]\n"