diff options
Diffstat (limited to 'lua/mason-core')
| -rw-r--r-- | lua/mason-core/managers/github/init.lua | 30 | ||||
| -rw-r--r-- | lua/mason-core/receipt.lua | 2 |
2 files changed, 24 insertions, 8 deletions
diff --git a/lua/mason-core/managers/github/init.lua b/lua/mason-core/managers/github/init.lua index b406f0f9..a3cbd103 100644 --- a/lua/mason-core/managers/github/init.lua +++ b/lua/mason-core/managers/github/init.lua @@ -49,19 +49,37 @@ local function with_tag_receipt(repo, tag) end ---@async ----@param opts {repo: string, version: Optional?, asset_file: string|fun(release: string):string} -function M.release_file(opts) +---@param opts {repo: string, version: Optional?} +function M.release_version(opts) local ctx = installer.context() + ---@type string local release = _.coalesce(opts.version, ctx.requested_version):or_else_get(function() return client .fetch_latest_release(opts.repo) :map(_.prop "tag_name") :get_or_throw "Failed to fetch latest release from GitHub API. Refer to :h mason-errors-github-api for more information." end) + + return { + with_receipt = function() + ctx.receipt:with_primary_source { + type = "github_release", + repo = opts.repo, + release = release, + } + end, + release = release, + } +end + +---@async +---@param opts {repo: string, version: Optional?, asset_file: string|fun(release: string):string} +function M.release_file(opts) + local source = M.release_version(opts) ---@type string local asset_file if type(opts.asset_file) == "function" then - asset_file = opts.asset_file(release) + asset_file = opts.asset_file(source.release) else assert(type(opts.asset_file) == "string", "expected asset_file to be a string") asset_file = opts.asset_file --[[@as string]] @@ -75,12 +93,12 @@ function M.release_file(opts) 0 ) end - local download_url = settings.current.github.download_url_template:format(opts.repo, release, asset_file) + local download_url = settings.current.github.download_url_template:format(opts.repo, source.release, asset_file) return { - release = release, + release = source.release, download_url = download_url, asset_file = asset_file, - with_receipt = with_release_file_receipt(opts.repo, download_url, release), + with_receipt = with_release_file_receipt(opts.repo, download_url, source.release), } end diff --git a/lua/mason-core/receipt.lua b/lua/mason-core/receipt.lua index 4d346ed8..68f6cf12 100644 --- a/lua/mason-core/receipt.lua +++ b/lua/mason-core/receipt.lua @@ -11,7 +11,6 @@ local M = {} ---| '"cargo"' ---| '"opam"' ---| '"dotnet"' ----| '"r_package"' ---| '"unmanaged"' ---| '"system"' ---| '"jdtls"' @@ -135,7 +134,6 @@ InstallReceiptBuilder.go = package_source "go" InstallReceiptBuilder.dotnet = package_source "dotnet" InstallReceiptBuilder.cargo = package_source "cargo" InstallReceiptBuilder.composer = package_source "composer" -InstallReceiptBuilder.r_package = package_source "r_package" InstallReceiptBuilder.opam = package_source "opam" InstallReceiptBuilder.luarocks = package_source "luarocks" |
