From 9c0a99819c99d70d28334dc6ea1c3ac773e4fed1 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Mon, 29 May 2023 16:52:20 +0200 Subject: ci: remove update-lockfile shell script --- scripts/check-queries.lua | 25 ++++++++++++----------- scripts/install-parsers.lua | 15 ++++++++++++++ scripts/minimal_init.lua | 5 +++-- scripts/pre-push | 10 ---------- scripts/run_tests.sh | 2 +- scripts/update-lockfile.lua | 47 ++++++++++++++++++++++++++++++++++++++++++++ scripts/update-lockfile.sh | 20 ------------------- scripts/update-readme.lua | 14 ++++++------- scripts/write-lockfile.lua | 48 --------------------------------------------- 9 files changed, 86 insertions(+), 100 deletions(-) create mode 100755 scripts/install-parsers.lua delete mode 100755 scripts/pre-push create mode 100755 scripts/update-lockfile.lua delete mode 100755 scripts/update-lockfile.sh delete mode 100755 scripts/write-lockfile.lua (limited to 'scripts') diff --git a/scripts/check-queries.lua b/scripts/check-queries.lua index f5d6d463b..fd9d538ac 100755 --- a/scripts/check-queries.lua +++ b/scripts/check-queries.lua @@ -93,17 +93,20 @@ local ok, result = pcall(do_check) local allowed_to_fail = vim.split(vim.env.ALLOWED_INSTALLATION_FAILURES or '', ',', true) for k, v in pairs(require('nvim-treesitter.parsers').configs) do - if #vim.api.nvim_get_runtime_file('parser/' .. k .. '.*', false) == 0 then - -- On CI all parsers that can be installed from C files should be installed - if - vim.env.CI - and not v.install_info.requires_generate_from_grammar - and not vim.list_contains(allowed_to_fail, k) - then - io_print('Error: parser for ' .. k .. ' is not installed') - vim.cmd('cq') - else - io_print('Warning: parser for ' .. k .. ' is not installed') + if v.install_info then + -- skip "query only" languages + if #vim.api.nvim_get_runtime_file('parser/' .. k .. '.*', false) == 0 then + -- On CI all parsers that can be installed from C files should be installed + if + vim.env.CI + and not v.install_info.requires_generate_from_grammar + and not vim.list_contains(allowed_to_fail, k) + then + io_print('Error: parser for ' .. k .. ' is not installed') + vim.cmd('cq') + else + io_print('Warning: parser for ' .. k .. ' is not installed') + end end end end diff --git a/scripts/install-parsers.lua b/scripts/install-parsers.lua new file mode 100755 index 000000000..ab06e538f --- /dev/null +++ b/scripts/install-parsers.lua @@ -0,0 +1,15 @@ +#!/usr/bin/env -S nvim -l + +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) + +vim.wait(6000000, function() + return done +end) diff --git a/scripts/minimal_init.lua b/scripts/minimal_init.lua index c826ddbf2..2af5f8ecb 100644 --- a/scripts/minimal_init.lua +++ b/scripts/minimal_init.lua @@ -2,11 +2,12 @@ vim.opt.runtimepath:append('.') vim.cmd.runtime({ 'plugin/plenary.vim', bang = true }) vim.cmd.runtime({ 'plugin/nvim-treesitter.lua', bang = true }) vim.cmd.runtime({ 'plugin/query_predicates.lua', bang = true }) +vim.cmd.runtime({ 'plugin/filetypes.lua', bang = true }) vim.filetype.add({ extension = { conf = 'hocon', - cmm = 't32', + hurl = 'hurl', ncl = 'nickel', tig = 'tiger', w = 'wing', @@ -20,6 +21,6 @@ require('nvim-treesitter').setup() vim.api.nvim_create_autocmd('FileType', { callback = function(args) pcall(vim.treesitter.start) - vim.bo[args.buffer].indentexpr = 'v:lua.require"nvim-treesitter".indentexpr()' + vim.bo[args.buf].indentexpr = 'v:lua.require"nvim-treesitter".indentexpr()' end, }) diff --git a/scripts/pre-push b/scripts/pre-push deleted file mode 100755 index 8d425b3b6..000000000 --- a/scripts/pre-push +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# Can be used as a pre-push hook -# Just symlink this file to .git/hooks/pre-push - -echo "Running linter..." -luacheck . - -echo "Checking formatting..." -stylua --check . diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index c6660a7f6..7ae6b22c5 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -4,7 +4,7 @@ HERE="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" cd $HERE/.. run() { - nvim --headless --noplugin -u scripts/minimal_init.lua \ + nvim --headless --noplugin -u scripts/minimal_init.lua \ -c "PlenaryBustedDirectory $1 { minimal_init = './scripts/minimal_init.lua' }" } diff --git a/scripts/update-lockfile.lua b/scripts/update-lockfile.lua new file mode 100755 index 000000000..dfd3e933f --- /dev/null +++ b/scripts/update-lockfile.lua @@ -0,0 +1,47 @@ +#!/usr/bin/env -S nvim -l +vim.opt.runtimepath:append('.') +local util = require('nvim-treesitter.util') + +-- Load previous lockfile +local filename = require('nvim-treesitter.install').get_package_path('lockfile.json') +local lockfile = vim.json.decode(util.read_file(filename)) + +---@type string? +local skip_lang_string = os.getenv('LOCKFILE_SKIP') +local skip_langs = skip_lang_string and vim.split(skip_lang_string, ',') or {} +vim.print('Skipping languages: ', skip_langs) + +local sorted_parsers = {} +for k, v in pairs(require('nvim-treesitter.parsers').configs) do + table.insert(sorted_parsers, { name = k, parser = v }) +end +table.sort(sorted_parsers, function(a, b) + return a.name < b.name +end) + +-- check for new revisions +for _, v in ipairs(sorted_parsers) do + if skip_langs and not vim.list_contains(skip_langs, v.name) then + local sha ---@type string + if v.parser.install_info.branch then + sha = vim.split( + vim.fn.systemlist( + 'git ls-remote ' + .. v.parser.install_info.url + .. ' | grep refs/heads/' + .. v.parser.install_info.branch + )[1], + '\t' + )[1] + else + sha = vim.split(vim.fn.systemlist('git ls-remote ' .. v.parser.install_info.url)[1], '\t')[1] + end + lockfile[v.name] = { revision = sha } + print(v.name .. ': ' .. sha) + else + print('Skipping ' .. v.name) + end +end + +lockfile = vim.fn.system('jq --sort-keys', vim.json.encode(lockfile)) +util.write_file(filename, lockfile) diff --git a/scripts/update-lockfile.sh b/scripts/update-lockfile.sh deleted file mode 100755 index d950b321a..000000000 --- a/scripts/update-lockfile.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -make_ignored() { - if [ -n "$1" ] - then - while read -r lang; do - if [ "$lang" != "$1" ] - then - printf "%s," "$lang" - fi - done < <(jq 'keys|@sh' -c lockfile.json) - fi -} - -TO_IGNORE=$(make_ignored $1) - -SKIP_LOCKFILE_UPDATE_FOR_LANGS="$TO_IGNORE" nvim -l ./scripts/write-lockfile.lua -# Pretty print -cp lockfile.json /tmp/lockfile.json -cat /tmp/lockfile.json | jq --sort-keys > lockfile.json diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua index 9dd9f9183..ded0d6bcb 100755 --- a/scripts/update-readme.lua +++ b/scripts/update-readme.lua @@ -1,21 +1,19 @@ #!/usr/bin/env -S nvim -l vim.opt.runtimepath:append('.') - +local util = require('nvim-treesitter.util') +local parsers = require('nvim-treesitter.parsers') ---@class Parser ---@field name string ---@field parser ParserInfo -local parsers = require('nvim-treesitter.parsers').configs local sorted_parsers = {} -for k, v in pairs(parsers) do +for k, v in pairs(parsers.configs) do table.insert(sorted_parsers, { name = k, parser = v }) end table.sort(sorted_parsers, function(a, b) return a.name < b.name end) -local tiers = require('nvim-treesitter.parsers').tiers - local generated_text = [[ Language | Tier | Queries | CLI | NPM | Maintainer -------- |:----:|:-------:|:---:|:---:| ---------- @@ -38,7 +36,7 @@ for _, v in ipairs(sorted_parsers) do end -- tier - generated_text = generated_text .. (p.tier and tiers[p.tier] or '') .. ' | ' + generated_text = generated_text .. (p.tier and parsers.tiers[p.tier] or '') .. ' | ' -- queries generated_text = generated_text @@ -66,7 +64,7 @@ end generated_text = generated_text .. footnotes local readme = 'SUPPORTED_LANGUAGES.md' -local readme_text = require('nvim-treesitter.util').read_file(readme) +local readme_text = util.read_file(readme) local new_readme_text = string.gsub( readme_text, @@ -74,7 +72,7 @@ local new_readme_text = string.gsub( '\n' .. generated_text .. '' ) -require('nvim-treesitter.util').write_file(readme, new_readme_text) +util.write_file(readme, new_readme_text) if string.find(readme_text, generated_text, 1, true) then print(readme .. ' is up-to-date\n') diff --git a/scripts/write-lockfile.lua b/scripts/write-lockfile.lua deleted file mode 100755 index 0b1d0504e..000000000 --- a/scripts/write-lockfile.lua +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env -S nvim -l -vim.opt.runtimepath:append('.') - --- Load previous lockfile -local filename = require('nvim-treesitter.install').get_package_path('lockfile.json') -local lockfile = vim.json.decode(require('nvim-treesitter.util').read_file(filename)) - ----@type string? -local skip_lang_string = os.getenv('SKIP_LOCKFILE_UPDATE_FOR_LANGS') -local skip_langs = skip_lang_string and vim.split(skip_lang_string, ',') or {} -vim.print('Skipping languages: ', skip_langs) - -local sorted_parsers = {} -local configs = require('nvim-treesitter.parsers').configs -for k, v in pairs(configs) do - table.insert(sorted_parsers, { name = k, parser = v }) -end -table.sort(sorted_parsers, function(a, b) - return a.name < b.name -end) - --- check for new revisions -for _, v in ipairs(sorted_parsers) do - if skip_langs and not vim.list_contains(skip_langs, v.name) then - local sha ---@type string - if v.parser.install_info.branch then - sha = vim.split( - vim.fn.systemlist( - 'git ls-remote ' - .. v.parser.install_info.url - .. ' | grep refs/heads/' - .. v.parser.install_info.branch - )[1], - '\t' - )[1] - else - sha = vim.split(vim.fn.systemlist('git ls-remote ' .. v.parser.install_info.url)[1], '\t')[1] - end - lockfile[v.name] = { revision = sha } - print(v.name .. ': ' .. sha) - else - print('Skipping ' .. v.name) - end -end -vim.print(lockfile) - --- write new lockfile -require('nvim-treesitter.util').write_file(filename, vim.json.encode(lockfile)) -- cgit v1.2.3-70-g09d2