Files
2026-09-17 22:57:27 +03:00

41 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""CLI-клиент постоянной sdbg-сессии."""
import argparse
import json
import sys
from sdbg.server import RPC_GENERATION_MUTATIONS, rpc_call
from sdbg.session import SessionError
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--socket', required=True)
parser.add_argument('method')
parser.add_argument('arguments', nargs='?', default='{}',
help='JSON-объект аргументов')
args = parser.parse_args()
try:
arguments = json.loads(args.arguments)
if not isinstance(arguments, dict):
raise ValueError('arguments должен быть JSON-объектом')
identity = {}
if args.method != 'status':
status = rpc_call(args.socket, 'status')
identity = {'session_id': status['session_id'],
'build_id': status['build_id']}
if args.method in RPC_GENERATION_MUTATIONS:
identity['generation'] = status['generation']
result = rpc_call(args.socket, args.method, arguments,
timeout=35 if args.method == 'events' else 10,
**identity)
print(json.dumps(result, ensure_ascii=False, indent=2))
return 0
except (SessionError, ValueError, OSError) as error:
print('sdbg-client: ' + str(error), file=sys.stderr)
return 1
if __name__ == '__main__':
sys.exit(main())