2023-06-24 02:07:49 +00:00
|
|
|
import argparse
|
|
|
|
import json
|
|
|
|
import os
|
|
|
|
|
|
|
|
def list_file_paths(path):
|
|
|
|
file_paths = []
|
|
|
|
for root, dirs, files in os.walk(path):
|
|
|
|
if "node_modules" in dirs:
|
|
|
|
dirs.remove("node_modules")
|
|
|
|
if "build" in dirs:
|
|
|
|
dirs.remove("build")
|
|
|
|
if "i18n" in dirs:
|
|
|
|
dirs.remove("i18n")
|
|
|
|
for file in files:
|
|
|
|
file_path = os.path.join(root, file)
|
|
|
|
if file_path.endswith("png") or file_path.endswith("ico") or file_path.endswith("db") or file_path.endswith("exe"):
|
|
|
|
continue
|
|
|
|
file_paths.append(file_path)
|
|
|
|
|
|
|
|
for dir in dirs:
|
|
|
|
dir_path = os.path.join(root, dir)
|
|
|
|
file_paths += list_file_paths(dir_path)
|
|
|
|
|
|
|
|
return file_paths
|
|
|
|
|
|
|
|
|
|
|
|
def replace_keys_in_repository(repo_path, json_file_path):
|
|
|
|
with open(json_file_path, 'r', encoding="utf-8") as json_file:
|
|
|
|
key_value_pairs = json.load(json_file)
|
|
|
|
|
|
|
|
pairs = []
|
|
|
|
for key, value in key_value_pairs.items():
|
|
|
|
pairs.append((key, value))
|
|
|
|
pairs.sort(key=lambda x: len(x[0]), reverse=True)
|
|
|
|
|
|
|
|
files = list_file_paths(repo_path)
|
|
|
|
print('Total files: {}'.format(len(files)))
|
2023-06-24 02:09:42 +00:00
|
|
|
for file_path in files:
|
2023-06-24 02:07:49 +00:00
|
|
|
replace_keys_in_file(file_path, pairs)
|
|
|
|
|
|
|
|
|
|
|
|
def replace_keys_in_file(file_path, pairs):
|
|
|
|
try:
|
|
|
|
with open(file_path, 'r', encoding="utf-8") as file:
|
|
|
|
content = file.read()
|
|
|
|
|
|
|
|
for key, value in pairs:
|
|
|
|
content = content.replace(key, value)
|
|
|
|
|
|
|
|
with open(file_path, 'w', encoding="utf-8") as file:
|
|
|
|
file.write(content)
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
print('UnicodeDecodeError: {}'.format(file_path))
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='Replace keys in repository.')
|
|
|
|
parser.add_argument('--repository_path', help='Path to repository')
|
|
|
|
parser.add_argument('--json_file_path', help='Path to JSON file')
|
|
|
|
args = parser.parse_args()
|
|
|
|
replace_keys_in_repository(args.repository_path, args.json_file_path)
|