aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/install.lua43
1 files changed, 34 insertions, 9 deletions
diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua
index 3f9125c34..1069cae97 100644
--- a/lua/nvim-treesitter/install.lua
+++ b/lua/nvim-treesitter/install.lua
@@ -37,6 +37,30 @@ local function get_revision(lang)
return (lockfile[lang] and lockfile[lang].revision)
end
+local function select_mkdir_cmd(directory, cwd, info_msg)
+ if fn.has('win32') == 1 then
+ return {
+ cmd = 'cmd',
+ opts = {
+ args = { '/C', 'mkdir', directory},
+ cwd = cwd,
+ },
+ info = info_msg,
+ err = "Could not create "..directory,
+ }
+ else
+ return {
+ cmd = 'mkdir',
+ opts = {
+ args = { directory },
+ cwd = cwd,
+ },
+ info = info_msg,
+ err = "Could not create "..directory,
+ }
+ end
+end
+
local function select_rm_file_cmd(file, info_msg)
if fn.has('win32') == 1 then
return {
@@ -182,7 +206,7 @@ local function select_mv_cmd(from, to, cwd)
end
local function select_download_commands(repo, project_name, cache_folder, revision)
- if vim.fn.executable('unzip') == 1 and vim.fn.executable('curl') == 1 and repo.url:find("github.com", 1, true) then
+ if vim.fn.executable('tar') == 1 and vim.fn.executable('curl') == 1 and repo.url:find("github.com", 1, true) then
revision = revision or repo.branch or "master"
local path_sep = utils.get_path_sep()
@@ -195,28 +219,29 @@ local function select_download_commands(repo, project_name, cache_folder, revisi
opts = {
args = {
'-L', -- follow redirects
- repo.url.."/archive/"..revision..".zip",
+ repo.url.."/archive/"..revision..".tar.gz",
'--output',
- project_name..".zip"
+ project_name..".tar.gz"
},
cwd = cache_folder,
},
},
+ select_mkdir_cmd(project_name..'-tmp', cache_folder, 'Creating temporary directory'),
{
- cmd = 'unzip',
+ cmd = 'tar',
info = 'Extracting...',
- err = 'Error during unzipping',
+ err = 'Error during tarball extraction.',
opts = {
args = {
- '-o',
- project_name..".zip",
- '-d',
+ '-xvf',
+ project_name..".tar.gz",
+ '-C',
project_name..'-tmp',
},
cwd = cache_folder,
},
},
- select_rm_file_cmd(cache_folder..path_sep..project_name..".zip"),
+ select_rm_file_cmd(cache_folder..path_sep..project_name..".tar.gz"),
select_mv_cmd(utils.join_path(project_name..'-tmp', repo.url:match('[^/]-$')..'-'..revision),
project_name,
cache_folder),