From 76542509a80db756270a806fa4a3280b699d91e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 26 Jun 2019 20:26:53 +0200 Subject: [PATCH] astyle: Added client/server --- tools/astyle_client.py | 62 ++++++++++++++++++++++++++++++++++++++++++ tools/astyle_server.py | 44 ++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 tools/astyle_client.py create mode 100644 tools/astyle_server.py diff --git a/tools/astyle_client.py b/tools/astyle_client.py new file mode 100644 index 000000000..b297cba22 --- /dev/null +++ b/tools/astyle_client.py @@ -0,0 +1,62 @@ +import glob +import os +import socket +import time + +def receive_data(conn): + data = '' + for t in range(1000): + d = conn.recv(8196) + if d: + data += d + if data.endswith('\nDONE'): + return data[:-5] + time.sleep(0.01) + return '' + + +def astyle(server_address, code): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + sock.connect(server_address) + sock.sendall(code + '\nDONE') + return receive_data(sock) + except socket.error as err: + print('Network error: ' + str(err)) + sock.close() + return None + + +def get_source_files(path): + files = [] + for g in glob.glob(path + '*'): + if g.startswith('.'): + continue + if os.path.isdir(g): + files += get_source_files(g + '/') + if os.path.isfile(g) and (g.endswith('.cpp') or g.endswith('.h')): + files.append(g) + return files + +if __name__ == "__main__": + server_address = ('localhost', 18000) + + source_files = [] + for d in ['cli', 'gui', 'lib', 'test', 'tools']: + source_files += get_source_files(d + '/') + + for filename in source_files: + f = open(filename, 'rt') + code = f.read() + f.close() + formatted_code = astyle(server_address, code) + if formatted_code is None: + break + if code != formatted_code: + print('Changed: ' + filename) + f = open(filename, 'wt') + f.write(formatted_code) + f.close() + else: + print('Unchanged: ' + filename) + diff --git a/tools/astyle_server.py b/tools/astyle_server.py new file mode 100644 index 000000000..ce2f70019 --- /dev/null +++ b/tools/astyle_server.py @@ -0,0 +1,44 @@ + +import logging +import socket +import subprocess + +from astyle_client import receive_data + +logger = logging.getLogger() + + +def server(port): + socket.setdefaulttimeout(30) + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + server_address = ('', port) + sock.bind(server_address) + + sock.listen(1) + + while True: + # Wait for a connection + connection, client_address = sock.accept() + + # Read data from client + try: + data = receive_data(connection) + except socket.error: + connection.close() + continue + + # Format + process = subprocess.Popen(['astyle', '--options=../.astylerc'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + comm = process.communicate(input=data) + + connection.sendall(comm[0] + '\nDONE') + connection.close() + + +if __name__ == "__main__": + server(port=18000) +