aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-01-04 23:06:29 +0100
committertgingold <tgingold@users.noreply.github.com>2021-01-05 18:50:44 +0100
commitf885f0794e77e0a6e8e0bd884dd4ec57890a5ddf (patch)
tree70e4430e3b7769b194992dd46bc90d275a8e5b4c /pyGHDL
parent22f1fbdd25b7927dc1aa235ee047cc698590f026 (diff)
downloadghdl-f885f0794e77e0a6e8e0bd884dd4ec57890a5ddf.tar.gz
ghdl-f885f0794e77e0a6e8e0bd884dd4ec57890a5ddf.tar.bz2
ghdl-f885f0794e77e0a6e8e0bd884dd4ec57890a5ddf.zip
Extract CLI parameters from ghdl-ls.
Diffstat (limited to 'pyGHDL')
-rw-r--r--pyGHDL/cli/lsp.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/pyGHDL/cli/lsp.py b/pyGHDL/cli/lsp.py
index dd1e9d5f5..3245bbfa2 100644
--- a/pyGHDL/cli/lsp.py
+++ b/pyGHDL/cli/lsp.py
@@ -35,21 +35,24 @@
#
from __future__ import absolute_import
-import argparse
-import logging
+from argparse import ArgumentParser
+from logging import getLogger, DEBUG, INFO, ERROR, basicConfig
import sys
import os
+from pydecor import export
+
import pyGHDL.libghdl as libghdl
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")
+__loggerName = "ghdl-ls"
-def rotate_log_files(basename, num):
+def __rotate_log_files(basename: str, num: int):
+ """Rotate existing log files."""
for i in range(num, 0, -1):
oldfile = "{}.{}".format(basename, i - 1)
if os.path.isfile(oldfile):
@@ -58,8 +61,9 @@ def rotate_log_files(basename, num):
os.rename(basename, "{}.0".format(basename))
-def main():
- parser = argparse.ArgumentParser(description="VHDL Language Protocol Server")
+def _generateCLIParser() -> ArgumentParser:
+ """Creates an CLI argument parser based on ``argparse``."""
+ parser = ArgumentParser(description="VHDL Language Protocol Server")
parser.add_argument(
"--version", "-V", action="version", version="%(prog)s " + version.__version__
)
@@ -69,7 +73,7 @@ def main():
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 (overrides GHDL_LS_TRACE)")
+ parser.add_argument("--trace-file", help="Save RPC data to FILE.in and FILE.out (overrides :env:`GHDL_LS_TRACE`)")
parser.add_argument("--input", "-i", help="Read request from file")
parser.add_argument(
"--disp-config",
@@ -77,6 +81,15 @@ def main():
help="Disp installation configuration and exit",
)
+ return parser
+
+
+@export
+def main():
+ """Entrypoint of GHDL's Language Protocol Server."""
+ logger = getLogger(__loggerName)
+
+ parser = _generateCLIParser()
args = parser.parse_args()
if args.disp_config:
@@ -86,18 +99,19 @@ def main():
# Setup logging
if args.verbose >= 2:
- loglevel = logging.DEBUG
+ loglevel = DEBUG
elif args.verbose >= 1:
- loglevel = logging.INFO
+ loglevel = INFO
else:
- loglevel = logging.ERROR
+ loglevel = ERROR
if args.log_file:
- rotate_log_files(args.log_file, 5)
+ __rotate_log_files(args.log_file, 5)
logstream = open(args.log_file, "w")
else:
logstream = sys.stderr
- logging.basicConfig(
+
+ basicConfig(
format="%(asctime)-15s [%(levelname)s] %(message)s",
stream=logstream,
level=loglevel,
@@ -122,8 +136,8 @@ def main():
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)
+ __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")
@@ -137,5 +151,6 @@ def main():
logger.exception("Uncaught error")
sys.exit(1)
+
if __name__ == '__main__':
main()