aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/update-readme.lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /scripts/update-readme.lua
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'scripts/update-readme.lua')
-rwxr-xr-xscripts/update-readme.lua90
1 files changed, 58 insertions, 32 deletions
diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua
index 251a64af4..825d84037 100755
--- a/scripts/update-readme.lua
+++ b/scripts/update-readme.lua
@@ -1,59 +1,85 @@
#!/usr/bin/env -S nvim -l
+vim.opt.runtimepath:append('.')
---@class Parser
---@field name string
---@field parser ParserInfo
-local parsers = require("nvim-treesitter.parsers").get_parser_configs()
+local parsers = require('nvim-treesitter.parsers').configs
local sorted_parsers = {}
-
for k, v in pairs(parsers) do
table.insert(sorted_parsers, { name = k, parser = v })
end
-
----@param a Parser
----@param b Parser
table.sort(sorted_parsers, function(a, b)
return a.name < b.name
end)
-local generated_text = ""
+local tiers = require('nvim-treesitter.parsers').tiers
----@param v Parser
-for _, v in ipairs(sorted_parsers) do
- local link = "[" .. (v.parser.readme_name or v.name) .. "](" .. v.parser.install_info.url .. ")"
+local generated_text = [[
+Language | Tier | Queries | CLI | NPM | Maintainer
+-------- |:----:|:-------:|:---:|:---:| ----------
+]]
+local footnotes = ''
- if v.parser.maintainers then
- generated_text = generated_text
- .. "- [x] "
- .. link
- .. " ("
- .. (v.parser.experimental and "experimental, " or "")
- .. "maintained by "
- .. table.concat(v.parser.maintainers, ", ")
- .. ")\n"
- else
- generated_text = generated_text .. "- [ ] " .. link .. (v.parser.experimental and " (experimental)" or "") .. "\n"
+for _, v in ipairs(sorted_parsers) do
+ local p = v.parser
+ -- language
+ generated_text = generated_text
+ .. '['
+ .. v.name
+ .. ']('
+ .. p.install_info.url
+ .. ')'
+ .. (p.readme_note and '[^' .. v.name .. ']' or '')
+ .. ' | '
+ if p.readme_note then
+ footnotes = footnotes .. '[^' .. v.name .. ']: ' .. p.readme_note .. '\n'
end
-end
-print(generated_text)
-print "\n"
+ -- tier
+ generated_text = generated_text .. (p.tier and tiers[p.tier] or '') .. ' | '
+
+ -- queries
+ generated_text = generated_text
+ .. '`'
+ .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/highlights.scm') and 'H' or ' ')
+ .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/folds.scm') and 'F' or ' ')
+ .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/indents.scm') and 'I' or ' ')
+ .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/injections.scm') and 'J' or ' ')
+ .. '` | '
-local readme_text = table.concat(vim.fn.readfile "README.md", "\n")
+ -- CLI
+ generated_text = generated_text
+ .. (p.install_info.requires_generate_from_grammar and '✓' or '')
+ .. ' | '
+
+ -- NPM
+ generated_text = generated_text .. (p.install_info.generate_requires_npm and '✓' or '') .. ' | '
+
+ -- Maintainer
+ generated_text = generated_text
+ .. (p.maintainers and table.concat(p.maintainers, ', ') or '')
+ .. '\n'
+end
+generated_text = generated_text .. footnotes
+
+local readme = assert(io.open('SUPPORTED_LANGUAGES.md', 'r'))
+local readme_text = readme:read('*a')
+readme:close()
local new_readme_text = string.gsub(
readme_text,
- "<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->",
- "<!--parserinfo-->\n" .. generated_text .. "<!--parserinfo-->"
+ '<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->',
+ '<!--parserinfo-->\n' .. generated_text .. '<!--parserinfo-->'
)
-vim.fn.writefile(vim.fn.split(new_readme_text, "\n"), "README.md")
+
+readme = assert(io.open('SUPPORTED_LANGUAGES.md', 'w'))
+readme:write(new_readme_text)
+readme:close()
if string.find(readme_text, generated_text, 1, true) then
- print "README.md is up-to-date!"
- vim.cmd "q"
+ print('README.md is up-to-date\n')
else
- print "New README.md was written. Please commit that change! Old text was: "
- print(string.sub(readme_text, string.find(readme_text, "<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->")))
- vim.cmd "cq"
+ print('New README.md was written\n')
end