terraform.lua 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. local M = {}
  2. M.config = function()
  3. O.lang.terraform = {
  4. formatter = {
  5. exe = "terraform",
  6. args = { "fmt" },
  7. stdin = false,
  8. },
  9. }
  10. end
  11. M.format = function()
  12. O.formatters.filetype["hcl"] = {
  13. function()
  14. return {
  15. exe = O.lang.terraform.formatter.exe,
  16. args = O.lang.terraform.formatter.args,
  17. stdin = not (O.lang.terraform.formatter.stdin ~= nil),
  18. }
  19. end,
  20. }
  21. O.formatters.filetype["tf"] = O.formatters.filetype["hcl"]
  22. require("formatter.config").set_defaults {
  23. logging = false,
  24. filetype = O.formatters.filetype,
  25. }
  26. end
  27. M.lint = function()
  28. -- TODO: implement linters (if applicable)
  29. return "No linters configured!"
  30. end
  31. M.lsp = function()
  32. if require("lv-utils").check_lsp_client_active "terraformls" then
  33. return
  34. end
  35. require("lspconfig").terraformls.setup {
  36. cmd = { DATA_PATH .. "/lspinstall/terraform/terraform-ls", "serve" },
  37. on_attach = require("lsp").common_on_attach,
  38. filetypes = { "tf", "terraform", "hcl" },
  39. }
  40. end
  41. M.dap = function()
  42. -- TODO: implement dap
  43. return "No DAP configured!"
  44. end
  45. return M