aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-registry/sources/github.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-04-07 22:33:43 +0200
committerGitHub <noreply@github.com>2023-04-07 22:33:43 +0200
commit84af7a1fa1dbdb0f201849be7993d999a05d973b (patch)
treeb14bf219ce1dc02bbd4cb7938f0b8fa4fb8fbc6a /lua/mason-registry/sources/github.lua
parentchore: update security policy (#1191) (diff)
downloadmason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar.gz
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar.bz2
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar.lz
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar.xz
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.tar.zst
mason-84af7a1fa1dbdb0f201849be7993d999a05d973b.zip
fix(windows): download registry archive to file instead of piping data (#1189)
Accessing binary data from the stdout of pwsh.exe's iwr seems to be causing data corruption leading to inability to unpack the archive.
Diffstat (limited to 'lua/mason-registry/sources/github.lua')
-rw-r--r--lua/mason-registry/sources/github.lua12
1 files changed, 7 insertions, 5 deletions
diff --git a/lua/mason-registry/sources/github.lua b/lua/mason-registry/sources/github.lua
index f4fd837a..ec758144 100644
--- a/lua/mason-registry/sources/github.lua
+++ b/lua/mason-registry/sources/github.lua
@@ -134,15 +134,17 @@ function GitHubRegistrySource:install()
log.trace("Resolved latest registry version", self, version)
end
- local zip_buffer = try(
- fetch(settings.current.github.download_url_template:format(self.spec.repo, version, "registry.json.zip")):map_err(
- _.always "Failed to download registry archive."
- )
- )
+ local zip_file = path.concat { self.root_dir, "registry.json.zip" }
+ try(fetch(settings.current.github.download_url_template:format(self.spec.repo, version, "registry.json.zip"), {
+ out_file = zip_file,
+ }):map_err(_.always "Failed to download registry archive."))
+ local zip_buffer = fs.async.read_file(zip_file)
local registry_contents = try(
Result.pcall(zzlib.unzip, zip_buffer, "registry.json")
+ :on_failure(_.partial(log.error, "Failed to unpack registry archive."))
:map_err(_.always "Failed to unpack registry archive.")
)
+ pcall(fs.async.unlink, zip_file)
local checksums = try(
fetch(settings.current.github.download_url_template:format(self.spec.repo, version, "checksums.txt")):map_err(