aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/install-parsers.lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-04-18 09:44:38 +0200
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit5a38df5627fd0658223bdf32c9d6a87e32eb9504 (patch)
treef2752a561d3cd7eb9c491f5882b2abeb85f77940 /scripts/install-parsers.lua
parentbot(readme): update (diff)
downloadnvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar.gz
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar.bz2
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar.lz
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar.xz
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.tar.zst
nvim-treesitter-5a38df5627fd0658223bdf32c9d6a87e32eb9504.zip
feat(install)!: generate from json instead of requiring node
Problem: Many parsers require node/npm to evaluate the `grammar.js` before being able to generate a parser from it. Solution: Generate from `grammar.json` instead, which is fully resolved. Drops `node` and `npm` as (optional) requirements for nvim-treesitter. Note that this requires parsers to commit the generated json iff the grammar requires evaluation (which is currently the case for all tracked languages).
Diffstat (limited to 'scripts/install-parsers.lua')
-rwxr-xr-xscripts/install-parsers.lua20
1 files changed, 17 insertions, 3 deletions
diff --git a/scripts/install-parsers.lua b/scripts/install-parsers.lua
index ab06e538f..c607e51f4 100755
--- a/scripts/install-parsers.lua
+++ b/scripts/install-parsers.lua
@@ -1,14 +1,28 @@
#!/usr/bin/env -S nvim -l
+local generate = false
+local parsers = {}
+for i = 1, #_G.arg do
+ if _G.arg[i] == '--generate' then
+ generate = true
+ else
+ parsers[#parsers + 1] = _G.arg[i]
+ end
+end
+
vim.opt.runtimepath:append('.')
-- needed on CI
vim.fn.mkdir(vim.fn.stdpath('cache'), 'p')
local done = false
-require('nvim-treesitter.install').install('all', {}, function()
- done = true
-end)
+require('nvim-treesitter.install').install(
+ #parsers > 0 and parsers or 'all',
+ { force = true, generate = generate },
+ function()
+ done = true
+ end
+)
vim.wait(6000000, function()
return done