From bf74a0983c2d534e217e7312ab559ca8929ff8a2 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sun, 27 Dec 2020 22:10:38 +0100 Subject: rework 'python', rename to 'pyGHDL' * Rename 'python' to 'pyGHDL'. * Let 'thin' be 'libghdl'. * Move move 'pyutils.py' from 'python/libghdl/vhdl' to a separate package ('pyGHDL/libghdl/utils/'). * Update 'vhdl_langserver' accordingly. * Rename 'vhdl_langserver' to 'lsp'. * Move 'ghdl-ls' to 'pyGHDL/cli'. --- pyGHDL/cli/ghdl-ls | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 pyGHDL/cli/ghdl-ls (limited to 'pyGHDL/cli') diff --git a/pyGHDL/cli/ghdl-ls b/pyGHDL/cli/ghdl-ls new file mode 100755 index 000000000..9ca41f5ca --- /dev/null +++ b/pyGHDL/cli/ghdl-ls @@ -0,0 +1,4 @@ +#! /usr/bin/env python3 +import pyGHDL.lsp.main as main + +main.main() -- cgit v1.2.3 From bd5671ea1feee3aa0d76cddb3c94f5c25738eaa2 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sun, 27 Dec 2020 23:26:57 +0100 Subject: pyGHDL: move 'lsp/main.py' to 'cli/ghdl-ls.py' --- pyGHDL/cli/ghdl-ls | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 3 deletions(-) mode change 100755 => 100644 pyGHDL/cli/ghdl-ls (limited to 'pyGHDL/cli') diff --git a/pyGHDL/cli/ghdl-ls b/pyGHDL/cli/ghdl-ls old mode 100755 new mode 100644 index 9ca41f5ca..9b1175560 --- a/pyGHDL/cli/ghdl-ls +++ b/pyGHDL/cli/ghdl-ls @@ -1,4 +1,107 @@ -#! /usr/bin/env python3 -import pyGHDL.lsp.main as main +#!/usr/bin/env python +from __future__ import absolute_import -main.main() +import argparse +import logging +import sys +import os + +import pyGHDL.libghdl as libghdl + +from . import version +from . import lsp +from . import vhdl_ls + +logger = logging.getLogger("ghdl-ls") + + +def rotate_log_files(basename, num): + for i in range(num, 0, -1): + oldfile = "{}.{}".format(basename, i - 1) + if os.path.isfile(oldfile): + os.rename(oldfile, "{}.{}".format(basename, i)) + if os.path.isfile(basename): + os.rename(basename, "{}.0".format(basename)) + + +def main(): + parser = argparse.ArgumentParser(description="VHDL Language Protocol Server") + parser.add_argument( + "--version", "-V", action="version", version="%(prog)s " + version.__version__ + ) + parser.add_argument( + "--verbose", "-v", action="count", default=0, help="Show debug output" + ) + parser.add_argument( + "--log-file", help="Redirect logs to the given file instead of stderr" + ) + parser.add_argument("--trace-file", help="Save rpc data to FILE.in and FILE.out") + parser.add_argument("--input", "-i", help="Read request from file") + parser.add_argument( + "--disp-config", + action="store_true", + help="Disp installation configuration and exit", + ) + + args = parser.parse_args() + + if args.disp_config: + libghdl.errorout_console.Install_Handler() + libghdl.disp_config() + return + + # Setup logging + if args.verbose >= 2: + loglevel = logging.DEBUG + elif args.verbose >= 1: + loglevel = logging.INFO + else: + loglevel = logging.ERROR + + if args.log_file: + rotate_log_files(args.log_file, 5) + logstream = open(args.log_file, "w") + else: + logstream = sys.stderr + logging.basicConfig( + format="%(asctime)-15s [%(levelname)s] %(message)s", + stream=logstream, + level=loglevel, + ) + + if args.verbose != 0: + sys.stderr.write("Args: {}\n".format(sys.argv)) + sys.stderr.write("Current directory: {}\n".format(os.getcwd())) + + logger.info("Args: %s", sys.argv) + logger.info("Current directory is %s", os.getcwd()) + + # Connection + instream = sys.stdin.buffer + if args.input is not None: + instream = open(args.input, "rb") + + conn = lsp.LSPConn(instream, sys.stdout.buffer) + + trace_file = args.trace_file + if trace_file is None: + trace_file = os.environ.get("GHDL_LS_TRACE") + if trace_file is not None: + if args.input is None: + rotate_log_files(trace_file + ".in", 5) + rotate_log_files(trace_file + ".out", 5) + conn = LSPConnTrace(trace_file, conn) + else: + logger.info("Traces disabled when -i/--input") + + handler = vhdl_ls.VhdlLanguageServer() + + try: + server = lsp.LanguageProtocolServer(handler, conn) + server.run() + except Exception: + logger.exception("Uncaught error") + sys.exit(1) + +if __name__ = '__main__': + main() -- cgit v1.2.3 From c9957f9808fbbeb00b83259d02a9855437ce5652 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 27 Dec 2020 23:29:26 +0100 Subject: Make pyGHDL/cli a Python package. --- pyGHDL/cli/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyGHDL/cli/__init__.py (limited to 'pyGHDL/cli') diff --git a/pyGHDL/cli/__init__.py b/pyGHDL/cli/__init__.py new file mode 100644 index 000000000..e69de29bb -- cgit v1.2.3 From cb9c6cf42ecfd89272d7cb7d3c7f490d4147b6e3 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 28 Dec 2020 18:16:25 +0100 Subject: Fixed typo in 'ghdl-ls'. --- pyGHDL/cli/ghdl-ls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pyGHDL/cli') diff --git a/pyGHDL/cli/ghdl-ls b/pyGHDL/cli/ghdl-ls index 9b1175560..74a10fd87 100644 --- a/pyGHDL/cli/ghdl-ls +++ b/pyGHDL/cli/ghdl-ls @@ -103,5 +103,5 @@ def main(): logger.exception("Uncaught error") sys.exit(1) -if __name__ = '__main__': +if __name__ == '__main__': main() -- cgit v1.2.3 From dcf1431dd2d469fae869204eec91882e6ab1c381 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Tue, 29 Dec 2020 02:30:36 +0100 Subject: Fixed language server. --- pyGHDL/cli/ghdl-ls | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'pyGHDL/cli') diff --git a/pyGHDL/cli/ghdl-ls b/pyGHDL/cli/ghdl-ls index 74a10fd87..33949fa67 100644 --- a/pyGHDL/cli/ghdl-ls +++ b/pyGHDL/cli/ghdl-ls @@ -7,10 +7,10 @@ import sys import os import pyGHDL.libghdl as libghdl - -from . import version -from . import lsp -from . import vhdl_ls +from pyGHDL.libghdl import version, errorout_console +from pyGHDL.lsp import LSPConnTrace +from pyGHDL.lsp.lsp import LSPConn, LanguageProtocolServer +from pyGHDL.lsp.vhdl_ls import VhdlLanguageServer logger = logging.getLogger("ghdl-ls") @@ -46,7 +46,7 @@ def main(): args = parser.parse_args() if args.disp_config: - libghdl.errorout_console.Install_Handler() + errorout_console.Install_Handler() libghdl.disp_config() return @@ -81,7 +81,7 @@ def main(): if args.input is not None: instream = open(args.input, "rb") - conn = lsp.LSPConn(instream, sys.stdout.buffer) + conn = LSPConn(instream, sys.stdout.buffer) trace_file = args.trace_file if trace_file is None: @@ -94,10 +94,10 @@ def main(): else: logger.info("Traces disabled when -i/--input") - handler = vhdl_ls.VhdlLanguageServer() + handler = VhdlLanguageServer() try: - server = lsp.LanguageProtocolServer(handler, conn) + server = LanguageProtocolServer(handler, conn) server.run() except Exception: logger.exception("Uncaught error") -- cgit v1.2.3