AssuanClient.make_request() now raises an error on 'ERR'.
[pyassuan.git] / bin / get-info.py
1 #!/usr/bin/env python3
2 #
3 # Copyright
4
5 """Simple pinentry program for getting server info.
6 """
7
8 import socket as _socket
9
10 from pyassuan import __version__
11 from pyassuan import client as _client
12 from pyassuan import common as _common
13
14
15 if __name__ == '__main__':
16     import argparse
17     import logging
18
19     parser = argparse.ArgumentParser(description=__doc__, version=__version__)
20     parser.add_argument(
21         '-V', '--verbose', action='count', default=0,
22         help='increase verbosity')
23     parser.add_argument(
24         'filename',
25         help="path to server's unix socket")
26
27     args = parser.parse_args()
28
29     client = _client.AssuanClient(name='get-info', close_on_disconnect=True)
30
31     if args.verbose:
32         client.logger.setLevel(max(
33                 logging.DEBUG, client.logger.level - 10*args.verbose))
34
35     socket = _socket.socket(_socket.AF_UNIX, _socket.SOCK_STREAM)
36     socket.connect(args.filename)
37     client.input = socket.makefile('r')
38     client.output = socket.makefile('w')
39     client.connect()
40     try:
41         response = client.read_response()
42         assert response.type == 'OK', response
43         client.make_request(_common.Request('HELP'))
44         client.make_request(_common.Request('HELP GETINFO'))
45         for attribute in ['version', 'pid', 'socket_name', 'ssh_socket_name']:
46             client.make_request(_common.Request('GETINFO', attribute))
47     finally:
48         client.make_request(_common.Request('BYE'))
49         client.disconnect()
50         socket.shutdown(_socket.SHUT_RDWR)
51         socket.close()