terraform.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. tempfile_prefix = ".formatter",
  19. }
  20. end,
  21. }
  22. O.formatters.filetype["tf"] = O.formatters.filetype["hcl"]
  23. require("formatter.config").set_defaults {
  24. logging = false,
  25. filetype = O.formatters.filetype,
  26. }
  27. end
  28. M.lint = function()
  29. -- TODO: implement linters (if applicable)
  30. return "No linters configured!"
  31. end
  32. M.lsp = function()
  33. if require("lv-utils").check_lsp_client_active "terraformls" then
  34. return
  35. end
  36. require("lspconfig").terraformls.setup {
  37. cmd = { DATA_PATH .. "/lspinstall/terraform/terraform-ls", "serve" },
  38. on_attach = require("lsp").common_on_attach,
  39. filetypes = { "tf", "terraform", "hcl" },
  40. }
  41. end
  42. M.dap = function()
  43. -- TODO: implement dap
  44. return "No DAP configured!"
  45. end
  46. return M