summaryrefslogtreecommitdiff
path: root/scripts/ci/install_treesitter_parsers.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/ci/install_treesitter_parsers.lua')
-rw-r--r--scripts/ci/install_treesitter_parsers.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/scripts/ci/install_treesitter_parsers.lua b/scripts/ci/install_treesitter_parsers.lua
new file mode 100644
index 0000000..6393fd8
--- /dev/null
+++ b/scripts/ci/install_treesitter_parsers.lua
@@ -0,0 +1,72 @@
+local install_dir = vim.fn.stdpath("data") .. "/site"
+local ok_setup, setup_err = pcall(function()
+ require("nvim-treesitter").setup({
+ install_dir = install_dir,
+ })
+end)
+
+if not ok_setup then
+ vim.api.nvim_echo(
+ { { "Error: " .. tostring(setup_err), "ErrorMsg" } },
+ true,
+ {}
+ )
+ vim.cmd("cq")
+end
+
+local ok_install, install_err = pcall(function()
+ require("nvim-treesitter").install({
+ "c",
+ "cpp",
+ "go",
+ "lua",
+ "php",
+ "python",
+ "typescript",
+ "javascript",
+ "java",
+ "ruby",
+ "tsx",
+ "c_sharp",
+ "vue",
+ }):wait(300000)
+end)
+
+if not ok_install then
+ vim.api.nvim_echo({
+ { "Error: " .. tostring(install_err), "ErrorMsg" },
+ }, true, {})
+ vim.cmd("cq")
+end
+
+local required_parsers = {
+ c = "c.so",
+ cpp = "cpp.so",
+ go = "go.so",
+ lua = "lua.so",
+ php = "php.so",
+ python = "python.so",
+ typescript = "typescript.so",
+ javascript = "javascript.so",
+ java = "java.so",
+ ruby = "ruby.so",
+ tsx = "tsx.so",
+ c_sharp = "c_sharp.so",
+ vue = "vue.so",
+}
+
+for lang, filename in pairs(required_parsers) do
+ local parser_path = install_dir .. "/parser/" .. filename
+ if not vim.uv.fs_stat(parser_path) then
+ vim.api.nvim_echo({
+ {
+ "Error: "
+ .. lang
+ .. " parser missing after install: "
+ .. parser_path,
+ "ErrorMsg",
+ },
+ }, true, {})
+ vim.cmd("cq")
+ end
+end