From a51c2d063c5377ee9e58c5f9cda7c7436787be72 Mon Sep 17 00:00:00 2001 From: 3uryd1ce <99762926+3uryd1ce@users.noreply.github.com> Date: Sat, 19 Aug 2023 00:48:10 -0600 Subject: fix(std): use gtar if available (#1433) Closes #1415. --- lua/mason-core/installer/managers/std.lua | 5 ++++- lua/mason/health.lua | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'lua') diff --git a/lua/mason-core/installer/managers/std.lua b/lua/mason-core/installer/managers/std.lua index d08de888..6e1a0d9e 100644 --- a/lua/mason-core/installer/managers/std.lua +++ b/lua/mason-core/installer/managers/std.lua @@ -1,5 +1,6 @@ local Result = require "mason-core.result" local _ = require "mason-core.functional" +local a = require "mason-core.async" local fetch = require "mason-core.fetch" local installer = require "mason-core.installer" local log = require "mason-core.log" @@ -108,7 +109,9 @@ end local function untar(rel_path) log.fmt_debug("std: untar %s", rel_path) local ctx = installer.context() - return ctx.spawn.tar({ "--no-same-owner", "-xvf", rel_path }):on_success(function() + a.scheduler() + local tar = vim.fn.executable "gtar" == 1 and "gtar" or "tar" + return ctx.spawn[tar]({ "--no-same-owner", "-xvf", rel_path }):on_success(function() pcall(function() ctx.fs:unlink(rel_path) end) diff --git a/lua/mason/health.lua b/lua/mason/health.lua index fdd5ea07..ade8a29d 100644 --- a/lua/mason/health.lua +++ b/lua/mason/health.lua @@ -143,7 +143,9 @@ local function check_core_utils() use_stderr = platform.is.mac, -- Apple gzip prints version string to stderr relaxed = platform.is.win, } - check { cmd = "tar", args = { "--version" }, name = "tar" } + + local tar = vim.fn.executable "gtar" == 1 and "gtar" or "tar" + check { cmd = tar, args = { "--version" }, name = tar } if platform.is.unix then check { cmd = "bash", args = { "--version" }, name = "bash" } -- cgit v1.2.3-70-g09d2