#!/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())