From 692b051b09935653befdb8f7ba8afdb640adf17b Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Mon, 12 Jun 2023 09:54:30 -0600 Subject: feat!: drop modules, general refactor and cleanup --- scripts/update-readme.lua | 90 ++++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 32 deletions(-) (limited to 'scripts/update-readme.lua') 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 + +local generated_text = [[ +Language | Tier | Queries | CLI | NPM | Maintainer +-------- |:----:|:-------:|:---:|:---:| ---------- +]] +local footnotes = '' ----@param v Parser 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 - .. " (" - .. (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" + 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, - ".*", - "\n" .. generated_text .. "" + '.*', + '\n' .. generated_text .. '' ) -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, ".*"))) - vim.cmd "cq" + print('New README.md was written\n') end -- cgit v1.2.3-70-g09d2