Go Test
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def _fail(message: str) -> None:
|
||||
print(json.dumps({'error': message}, ensure_ascii=False))
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _parse_args() -> tuple[str, str, str, str]:
|
||||
if len(sys.argv) < 5:
|
||||
_fail('usage: python_bridge.py <project_root> <command> <alter> <equ_version>')
|
||||
project_root = sys.argv[1]
|
||||
command = sys.argv[2]
|
||||
alter = sys.argv[3]
|
||||
equ_version = sys.argv[4]
|
||||
return project_root, command, alter, equ_version
|
||||
|
||||
|
||||
def _ensure_path(project_root: str) -> None:
|
||||
if project_root not in sys.path:
|
||||
sys.path.insert(0, project_root)
|
||||
sys.argv[0] = os.path.join(project_root, 'main.py')
|
||||
os.chdir(project_root)
|
||||
|
||||
|
||||
def _load_character(alter: str, equ_version: str):
|
||||
from core.basic.character import createCharacter
|
||||
|
||||
character = createCharacter(alter, equ_version or '0')
|
||||
if character is None:
|
||||
raise RuntimeError(f'failed to create character for {alter}')
|
||||
return character
|
||||
|
||||
|
||||
def _character_info(alter: str, equ_version: str):
|
||||
character = _load_character(alter, equ_version)
|
||||
return character.getInfo()
|
||||
|
||||
|
||||
def _character_skills(alter: str, equ_version: str):
|
||||
info = _character_info(alter, equ_version)
|
||||
skills = info.get('skills', [])
|
||||
return [
|
||||
{
|
||||
'id': str(skill.get('id', '')),
|
||||
'name': skill.get('name', ''),
|
||||
'type': skill.get('type', ''),
|
||||
'learnLv': int(skill.get('learnLv', 0)),
|
||||
'maxLearnLv': int(skill.get('maxLearnLv', 0)),
|
||||
'hasVP': bool(skill.get('hasVP', False)),
|
||||
'hasUP': bool(skill.get('hasUP', False)),
|
||||
'uuid': skill.get('uuid', ''),
|
||||
}
|
||||
for skill in skills
|
||||
]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
project_root, command, alter, equ_version = _parse_args()
|
||||
_ensure_path(project_root)
|
||||
|
||||
try:
|
||||
if command == 'character-info':
|
||||
data = _character_info(alter, equ_version)
|
||||
elif command == 'character-skills':
|
||||
data = _character_skills(alter, equ_version)
|
||||
else:
|
||||
_fail(f'unknown command: {command}')
|
||||
print(json.dumps(data, ensure_ascii=False))
|
||||
except Exception as ex:
|
||||
_fail(str(ex))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user