aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/update-readme.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/update-readme.lua')
-rwxr-xr-xscripts/update-readme.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua
new file mode 100755
index 000000000..8cc91f86d
--- /dev/null
+++ b/scripts/update-readme.lua
@@ -0,0 +1,38 @@
+-- Execute as `nvim --headless -c "luafile ./scripts/update-readme.lua"`
+local parsers = require 'nvim-treesitter.parsers'.get_parser_configs()
+local sorted_parsers = {}
+
+for k, v in pairs(parsers) do
+ table.insert(sorted_parsers, {name = k, parser = v})
+end
+
+table.sort(sorted_parsers, function(a, b) return a.name < b.name end)
+
+local generated_text = ''
+
+for _, v in ipairs(sorted_parsers) do
+ local link = '['..(v.parser.readme_name or v.name)..']('..v.parser.install_info.url..')'
+
+ if v.parser.maintainers then
+ generated_text = generated_text..
+ '- [x] '..link..' (maintained by '..table.concat(v.parser.maintainers, ', ')..')\n'
+ else
+ generated_text = generated_text..
+ '- [ ] '..link..'\n'
+ end
+end
+
+print(generated_text)
+print("\n")
+
+local readme_text = table.concat(vim.fn.readfile('README.md'), '\n')
+
+local new_readme_text = string.gsub(readme_text, "<!%-%-parserinfo%-%->.*<!%-%-parserinfo%-%->",
+ "<!--parserinfo-->\n"..generated_text.."<!--parserinfo-->")
+vim.fn.writefile(vim.fn.split(new_readme_text, '\n'), "README.md")
+
+if string.find(readme_text, generated_text, 1, 'plain') then
+ vim.cmd('q')
+else
+ vim.cmd('cq')
+end