mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
feat(install): add options prefer_git and command_extra_args
Fixes #1888
This commit is contained in:
parent
f05f471185
commit
2a073f760c
2 changed files with 15 additions and 5 deletions
|
|
@ -12,6 +12,8 @@ local M = {}
|
|||
local lockfile = {}
|
||||
|
||||
M.compilers = { vim.fn.getenv "CC", "cc", "gcc", "clang", "cl" }
|
||||
M.prefer_git = fn.has "win32" == 1
|
||||
M.command_extra_args = {}
|
||||
|
||||
local started_commands = 0
|
||||
local finished_commands = 0
|
||||
|
|
@ -124,6 +126,10 @@ function M.iter_cmd(cmd_list, i, lang, success_message)
|
|||
print(get_job_status() .. " " .. attr.info)
|
||||
end
|
||||
|
||||
if attr.opts and attr.opts.args and M.command_extra_args[attr.cmd] then
|
||||
vim.list_extend(attr.opts.args, M.command_extra_args[attr.cmd])
|
||||
end
|
||||
|
||||
if type(attr.cmd) == "function" then
|
||||
local ok, err = pcall(attr.cmd)
|
||||
if ok then
|
||||
|
|
@ -180,6 +186,9 @@ end
|
|||
local function get_command(cmd)
|
||||
local options = ""
|
||||
if cmd.opts and cmd.opts.args then
|
||||
if M.command_extra_args[cmd.cmd] then
|
||||
vim.list_extend(cmd.opts.args, M.command_extra_args[cmd.cmd])
|
||||
end
|
||||
for _, opt in ipairs(cmd.opts.args) do
|
||||
options = string.format("%s %s", options, opt)
|
||||
end
|
||||
|
|
@ -270,7 +279,10 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync,
|
|||
local command_list = {}
|
||||
if not from_local_path then
|
||||
vim.list_extend(command_list, { shell.select_install_rm_cmd(cache_folder, project_name) })
|
||||
vim.list_extend(command_list, shell.select_download_commands(repo, project_name, cache_folder, revision))
|
||||
vim.list_extend(
|
||||
command_list,
|
||||
shell.select_download_commands(repo, project_name, cache_folder, revision, M.prefer_git)
|
||||
)
|
||||
end
|
||||
if generate_from_grammar then
|
||||
if repo.generate_requires_npm then
|
||||
|
|
|
|||
|
|
@ -121,16 +121,14 @@ function M.select_mv_cmd(from, to, cwd)
|
|||
end
|
||||
end
|
||||
|
||||
function M.select_download_commands(repo, project_name, cache_folder, revision)
|
||||
function M.select_download_commands(repo, project_name, cache_folder, revision, prefer_git)
|
||||
local can_use_tar = vim.fn.executable "tar" == 1 and vim.fn.executable "curl" == 1
|
||||
local is_github = repo.url:find("github.com", 1, true)
|
||||
local is_gitlab = repo.url:find("gitlab.com", 1, true)
|
||||
|
||||
local is_windows = fn.has "win32" == 1
|
||||
|
||||
revision = revision or repo.branch or "master"
|
||||
|
||||
if can_use_tar and (is_github or is_gitlab) and not is_windows then
|
||||
if can_use_tar and (is_github or is_gitlab) and not prefer_git then
|
||||
local path_sep = utils.get_path_sep()
|
||||
local url = repo.url:gsub(".git$", "")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue