digital-ide/scripts/command/make_title_token.py

64 lines
2.1 KiB
Python

from typing import List
import sys
import os
sys.path.append(os.path.abspath('.'))
from script.util import read_json, write_json
PACKAGE_FILE = './package.json'
LANG_PACKGE_FILES = {
'en': './package.nls.json',
'zh-cn': './package.nls.zh-cn.json',
'zh-tw': './package.nls.zh-tw.json',
'de': './package.nls.de.json',
'ja': './package.nls.ja.json'
}
def generate_title_token(command_name: str) -> str:
names = command_name.split('.')
prj_name = names[0]
main_names = names[1:]
title_token_name = [prj_name] + main_names + ['title']
return '.'.join(title_token_name)
def merge_tokens(lang_package_path: str, tokens: List[str], token_values: List[str]):
config = read_json(lang_package_path)
for token, value in zip(tokens, token_values):
if token not in config:
config[token] = value
write_json(lang_package_path, config)
if __name__ == '__main__':
# adjust main package
config = read_json(PACKAGE_FILE)
token_names = []
token_values = []
# 获取 properties 中的 title
for property_name in config['contributes']['configuration']['properties']:
# property_name: digital-ide.welcome.show
property_body = config['contributes']['configuration']['properties'][property_name]
print(property_body)
token_name = generate_title_token(property_name)
token_names.append(token_name)
if 'description' in property_body and not property_body['description'].startswith('%'):
token_values.append(property_body['description'])
else:
token_values.append("")
property_body['description'] = '%' + token_name + '%'
# 获取 command 中的 title
for item in config['contributes']['commands']:
if 'command' in item:
token_name = generate_title_token(item['command'])
token_names.append(token_name)
token_values.append("")
item['title'] = '%' + token_name + '%'
write_json(PACKAGE_FILE, config)
# cover in lang package
for name, lang_path in LANG_PACKGE_FILES.items():
merge_tokens(lang_path, token_names, token_values)