bash_language_server.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from ..types import LanguageServerManagerAPI
  2. from .config import load_config_schema
  3. from .utils import NodeModuleSpec
  4. class BashLanguageServer(NodeModuleSpec):
  5. node_module = key = "bash-language-server"
  6. script = ["out", "cli.js"]
  7. fallback_script = ["bin", "main.js"]
  8. args = ["start"]
  9. languages = ["bash", "sh"]
  10. spec = dict(
  11. display_name=key,
  12. mime_types=["text/x-sh", "application/x-sh"],
  13. urls=dict(
  14. home="https://github.com/bash-lsp/{}".format(key),
  15. issues="https://github.com/bash-lsp/{}/issues".format(key),
  16. ),
  17. install=dict(
  18. npm="npm install --save-dev {}".format(key),
  19. yarn="yarn add --dev {}".format(key),
  20. jlpm="jlpm add --dev {}".format(key),
  21. ),
  22. config_schema=load_config_schema(key),
  23. )
  24. def solve(self, mgr: LanguageServerManagerAPI):
  25. new_path = mgr.find_node_module(self.node_module, *self.script)
  26. if new_path:
  27. return new_path
  28. return mgr.find_node_module(
  29. self.node_module, *self.fallback_script
  30. ) # pragma: no cover