aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/core/fetch.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/core/fetch.lua')
-rw-r--r--lua/nvim-lsp-installer/core/fetch.lua28
1 files changed, 21 insertions, 7 deletions
diff --git a/lua/nvim-lsp-installer/core/fetch.lua b/lua/nvim-lsp-installer/core/fetch.lua
index d97da59b..4c0d1f25 100644
--- a/lua/nvim-lsp-installer/core/fetch.lua
+++ b/lua/nvim-lsp-installer/core/fetch.lua
@@ -12,28 +12,42 @@ local HEADERS = {
iwr = ("-Headers @{'User-Agent' = '%s'}"):format(USER_AGENT),
}
+---@alias FetchOpts {out_file:string}
+
---@async
---@param url string @The url to fetch.
-local function fetch(url)
+---@param opts FetchOpts
+local function fetch(url, opts)
+ opts = opts or {}
log.fmt_debug("Fetching URL %s", url)
local platform_specific = Result.failure()
if platform.is_win then
- platform_specific = powershell.command(
- ([[Write-Output (iwr %s -UseBasicParsing -Uri %q).Content;]]):format(HEADERS.iwr, url)
- )
+ if opts.out_file then
+ platform_specific = powershell.command(
+ ([[iwr %s -UseBasicParsing -Uri %q; -OutFile %q]]):format(HEADERS.iwr, url, opts.out_file)
+ )
+ else
+ platform_specific = powershell.command(
+ ([[Write-Output (iwr %s -UseBasicParsing -Uri %q).Content;]]):format(HEADERS.iwr, url)
+ )
+ end
end
return platform_specific
:recover_catching(function()
- return spawn.wget({ HEADERS.wget, "-nv", "-O", "-", url }):get_or_throw()
+ return spawn.wget({ HEADERS.wget, "-nv", "-O", opts.out_file or "-", url }):get_or_throw()
end)
:recover_catching(function()
- return spawn.curl({ HEADERS.curl, "-fsSL", url }):get_or_throw()
+ return spawn.curl({ HEADERS.curl, "-fsSL", opts.out_file and { "-o", opts.out_file } or vim.NIL, url }):get_or_throw()
end)
:map(function(result)
- return result.stdout
+ if opts.out_file then
+ return result
+ else
+ return result.stdout
+ end
end)
end