diff options
| author | William Boman <william@redwill.se> | 2023-04-07 22:33:43 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-07 22:33:43 +0200 |
| commit | 84af7a1fa1dbdb0f201849be7993d999a05d973b (patch) | |
| tree | b14bf219ce1dc02bbd4cb7938f0b8fa4fb8fbc6a /lua/mason-registry/sources/github.lua | |
| parent | chore: update security policy (#1191) (diff) | |
| download | mason-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.lua | 12 |
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( |
