aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-05-01 15:02:43 +0200
committerGitHub <noreply@github.com>2022-05-01 15:02:43 +0200
commit52d8f78fd1c1657f58115adc1928763571ffc7fa (patch)
tree0eb4ab1657980b7fc425c75d3d1920e5a345d545 /lua
parentfeat: allow excluding servers from automatic installation (#643) (diff)
downloadmason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar.gz
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar.bz2
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar.lz
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar.xz
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.tar.zst
mason-52d8f78fd1c1657f58115adc1928763571ffc7fa.zip
feat(receipt): add "github_release" type (#650)
This is for sources that uses GitHub releases, but doesn't target a specific asset file (as opposed to the github_release_file source).
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer/core/managers/github/init.lua45
-rw-r--r--lua/nvim-lsp-installer/core/receipt.lua22
-rw-r--r--lua/nvim-lsp-installer/jobs/outdated-servers/github_release_file.lua20
-rw-r--r--lua/nvim-lsp-installer/jobs/outdated-servers/github_tag.lua20
-rw-r--r--lua/nvim-lsp-installer/jobs/outdated-servers/init.lua8
-rw-r--r--lua/nvim-lsp-installer/jobs/version-check/init.lua1
6 files changed, 51 insertions, 65 deletions
diff --git a/lua/nvim-lsp-installer/core/managers/github/init.lua b/lua/nvim-lsp-installer/core/managers/github/init.lua
index cb19ad2e..107bc94d 100644
--- a/lua/nvim-lsp-installer/core/managers/github/init.lua
+++ b/lua/nvim-lsp-installer/core/managers/github/init.lua
@@ -2,6 +2,7 @@ local installer = require "nvim-lsp-installer.core.installer"
local std = require "nvim-lsp-installer.core.managers.std"
local client = require "nvim-lsp-installer.core.managers.github.client"
local platform = require "nvim-lsp-installer.platform"
+local Result = require "nvim-lsp-installer.core.result"
local M = {}
@@ -84,4 +85,48 @@ function M.gunzip_release_file(opts)
return release_file_source
end
+---@async
+---@param receipt InstallReceipt
+function M.check_outdated_primary_package_release(receipt)
+ local source = receipt.primary_source
+ if source.type ~= "github_release" and source.type ~= "github_release_file" then
+ return Result.failure "Receipt does not have a primary source of type (github_release|github_release_file)."
+ end
+ return client.fetch_latest_release(source.repo, { tag_name_pattern = source.tag_name_pattern }):map_catching(
+ ---@param latest_release GitHubRelease
+ function(latest_release)
+ if source.release ~= latest_release.tag_name then
+ return {
+ name = source.repo,
+ current_version = source.release,
+ latest_version = latest_release.tag_name,
+ }
+ end
+ error "Primary package is not outdated."
+ end
+ )
+end
+
+---@async
+---@param receipt InstallReceipt
+function M.check_outdated_primary_package_tag(receipt)
+ local source = receipt.primary_source
+ if source.type ~= "github_tag" then
+ return Result.failure "Receipt does not have a primary source of type github_tag."
+ end
+ return client.fetch_latest_tag(source.repo):map_catching(
+ ---@param latest_tag GitHubTag
+ function(latest_tag)
+ if source.tag ~= latest_tag.name then
+ return {
+ name = source.repo,
+ current_version = source.tag,
+ latest_version = latest_tag.name,
+ }
+ end
+ error "Primary package is not outdated."
+ end
+ )
+end
+
return M
diff --git a/lua/nvim-lsp-installer/core/receipt.lua b/lua/nvim-lsp-installer/core/receipt.lua
index 21600eae..4517256a 100644
--- a/lua/nvim-lsp-installer/core/receipt.lua
+++ b/lua/nvim-lsp-installer/core/receipt.lua
@@ -18,6 +18,7 @@ local M = {}
---| '"jdtls"'
---| '"git"'
---| '"github_tag"'
+---| '"github_release"'
---| '"github_release_file"'
---@alias InstallReceiptSource {type: InstallReceiptSourceType}
@@ -135,27 +136,6 @@ function InstallReceiptBuilder.git_remote(remote_url)
return { type = "git", remote = remote_url }
end
----@param ctx ServerInstallContext
----@param opts FetchLatestGithubReleaseOpts|nil
-function InstallReceiptBuilder.github_release_file(ctx, opts)
- opts = opts or {}
- return {
- type = "github_release_file",
- repo = ctx.github_repo,
- file = ctx.github_release_file,
- release = ctx.requested_server_version,
- tag_name_pattern = opts.tag_name_pattern,
- }
-end
-
-function InstallReceiptBuilder.github_tag(ctx)
- return {
- type = "github_tag",
- repo = ctx.github_repo,
- tag = ctx.requested_server_version,
- }
-end
-
---@class InstallReceipt
---@field public name string
---@field public schema_version InstallReceiptSchemaVersion
diff --git a/lua/nvim-lsp-installer/jobs/outdated-servers/github_release_file.lua b/lua/nvim-lsp-installer/jobs/outdated-servers/github_release_file.lua
deleted file mode 100644
index 66523a23..00000000
--- a/lua/nvim-lsp-installer/jobs/outdated-servers/github_release_file.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local github_client = require "nvim-lsp-installer.core.managers.github.client"
-
----@async
----@param receipt InstallReceipt
-return function(receipt)
- local source = receipt.primary_source
- return github_client.fetch_latest_release(source.repo, { tag_name_pattern = source.tag_name_pattern }):map_catching(
- ---@param latest_release GitHubRelease
- function(latest_release)
- if source.release ~= latest_release.tag_name then
- return {
- name = source.repo,
- current_version = source.release,
- latest_version = latest_release.tag_name,
- }
- end
- error "Primary package is not outdated."
- end
- )
-end
diff --git a/lua/nvim-lsp-installer/jobs/outdated-servers/github_tag.lua b/lua/nvim-lsp-installer/jobs/outdated-servers/github_tag.lua
deleted file mode 100644
index d9d3d9d7..00000000
--- a/lua/nvim-lsp-installer/jobs/outdated-servers/github_tag.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local github_client = require "nvim-lsp-installer.core.managers.github.client"
-
----@async
----@param receipt InstallReceipt
-return function(receipt)
- local source = receipt.primary_source
- return github_client.fetch_latest_tag(source.repo):map_catching(
- ---@param latest_tag GitHubTag
- function(latest_tag)
- if source.tag ~= latest_tag.name then
- return {
- name = source.repo,
- current_version = source.tag,
- latest_version = latest_tag.name,
- }
- end
- error "Primary package is not outdated."
- end
- )
-end
diff --git a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
index 8ea36b9a..acb73f13 100644
--- a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
+++ b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
@@ -9,9 +9,8 @@ local git = require "nvim-lsp-installer.core.managers.git"
local gem = require "nvim-lsp-installer.core.managers.gem"
local go = require "nvim-lsp-installer.core.managers.go"
local cargo = require "nvim-lsp-installer.core.managers.cargo"
+local github = require "nvim-lsp-installer.core.managers.github"
local composer = require "nvim-lsp-installer.core.managers.composer"
-local github_release_file_check = require "nvim-lsp-installer.jobs.outdated-servers.github_release_file"
-local github_tag_check = require "nvim-lsp-installer.jobs.outdated-servers.github_tag"
local jdtls_check = require "nvim-lsp-installer.jobs.outdated-servers.jdtls"
local M = {}
@@ -30,8 +29,9 @@ local checkers = {
["gem"] = gem.check_outdated_primary_package,
["go"] = go.check_outdated_primary_package,
["jdtls"] = jdtls_check,
- ["github_release_file"] = github_release_file_check,
- ["github_tag"] = github_tag_check,
+ ["github_release_file"] = github.check_outdated_primary_package_release,
+ ["github_release"] = github.check_outdated_primary_package_release,
+ ["github_tag"] = github.check_outdated_primary_package_tag,
}
local pending_servers = {}
diff --git a/lua/nvim-lsp-installer/jobs/version-check/init.lua b/lua/nvim-lsp-installer/jobs/version-check/init.lua
index 85ac8b26..827c9fa9 100644
--- a/lua/nvim-lsp-installer/jobs/version-check/init.lua
+++ b/lua/nvim-lsp-installer/jobs/version-check/init.lua
@@ -49,6 +49,7 @@ local version_checker = {
return go.get_installed_primary_package_version(receipt, server.root_dir)
end,
["github_release_file"] = version_in_receipt "release",
+ ["github_release"] = version_in_receipt "release",
["github_tag"] = version_in_receipt "tag",
["jdtls"] = version_in_receipt "version",
}