aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-17 01:33:30 +0200
committerGitHub <noreply@github.com>2022-07-17 01:33:30 +0200
commit23f513d3d2188c3c0c1dface35847b9e9ad53d9b (patch)
treecc2ac18c05424d921c0f3a70a5c5d3d3ac5415c6 /lua
parentdocs: add reference link to help (#85) (diff)
downloadmason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar.gz
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar.bz2
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar.lz
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar.xz
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.tar.zst
mason-23f513d3d2188c3c0c1dface35847b9e9ad53d9b.zip
fix(jdtls): download milestone versions instead of snapshots (#87)
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/clients/eclipse.lua15
-rw-r--r--lua/mason-core/fetch.lua1
-rw-r--r--lua/mason-core/package/version-check.lua18
-rw-r--r--lua/mason-registry/jdtls/init.lua22
4 files changed, 12 insertions, 44 deletions
diff --git a/lua/mason-core/clients/eclipse.lua b/lua/mason-core/clients/eclipse.lua
deleted file mode 100644
index bca31648..00000000
--- a/lua/mason-core/clients/eclipse.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-local fetch = require "mason-core.fetch"
-local M = {}
-
----@param version string The version string as found in the latest.txt endpoint.
----@return string The parsed version number.
-function M._parse_jdtls_version_string(version)
- return vim.trim(version):gsub("^jdt%-language%-server%-", ""):gsub("%.tar%.gz$", "")
-end
-
----@async
-function M.fetch_latest_jdtls_version()
- return fetch("https://download.eclipse.org/jdtls/snapshots/latest.txt"):map(M._parse_jdtls_version_string)
-end
-
-return M
diff --git a/lua/mason-core/fetch.lua b/lua/mason-core/fetch.lua
index f6b28ebd..8aca8b89 100644
--- a/lua/mason-core/fetch.lua
+++ b/lua/mason-core/fetch.lua
@@ -19,6 +19,7 @@ local USER_AGENT = "mason.nvim (+https://github.com/williamboman/mason.nvim)"
---@async
---@param url string: The url to fetch.
---@param opts FetchOpts | nil
+---@return Result: Result<string>
local function fetch(url, opts)
opts = opts or {}
if not opts.headers then
diff --git a/lua/mason-core/package/version-check.lua b/lua/mason-core/package/version-check.lua
index b999c280..3359446a 100644
--- a/lua/mason-core/package/version-check.lua
+++ b/lua/mason-core/package/version-check.lua
@@ -1,7 +1,6 @@
local Result = require "mason-core.result"
local cargo = require "mason-core.managers.cargo"
local composer = require "mason-core.managers.composer"
-local eclipse = require "mason-core.clients.eclipse"
local gem = require "mason-core.managers.gem"
local git = require "mason-core.managers.git"
local github = require "mason-core.managers.github"
@@ -32,24 +31,8 @@ local get_installed_version_by_type = {
["github_release_file"] = version_in_receipt "release",
["github_release"] = version_in_receipt "release",
["github_tag"] = version_in_receipt "tag",
- ["jdtls"] = version_in_receipt "version",
}
----@async
----@param receipt InstallReceipt
-local function jdtls_check(receipt)
- return eclipse.fetch_latest_jdtls_version():map_catching(function(latest_version)
- if receipt.primary_source.version ~= latest_version then
- return {
- name = "jdtls",
- current_version = receipt.primary_source.version,
- latest_version = latest_version,
- }
- end
- error "Primary package is not outdated."
- end)
-end
-
---@class NewPackageVersion
---@field name string
---@field current_version string
@@ -64,7 +47,6 @@ local get_new_version_by_type = {
["gem"] = gem.check_outdated_primary_package,
["go"] = go.check_outdated_primary_package,
["luarocks"] = luarocks.check_outdated_primary_package,
- ["jdtls"] = jdtls_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,
diff --git a/lua/mason-registry/jdtls/init.lua b/lua/mason-registry/jdtls/init.lua
index 55a299a6..b3a5f640 100644
--- a/lua/mason-registry/jdtls/init.lua
+++ b/lua/mason-registry/jdtls/init.lua
@@ -1,27 +1,27 @@
local Pkg = require "mason-core.package"
local installer = require "mason-core.installer"
-local eclipse = require "mason-core.clients.eclipse"
+local _ = require "mason-core.functional"
local std = require "mason-core.managers.std"
+local github = require "mason-core.managers.github"
local path = require "mason-core.path"
local platform = require "mason-core.platform"
+local fetch = require "mason-core.fetch"
---@async
local function download_jdtls()
- local ctx = installer.context()
- local version = ctx.requested_version:or_else_get(function()
- return eclipse.fetch_latest_jdtls_version():get_or_throw()
- end)
+ local source = github.tag { repo = "eclipse/eclipse.jdt.ls" }
+ source.with_receipt()
+
+ local version = _.gsub("^v", "", source.tag)
+ local response =
+ fetch(("https://download.eclipse.org/jdtls/milestones/%s/latest.txt"):format(version)):get_or_throw "Failed to fetch latest release from eclipse.org."
+ local release_file = _.head(_.split("\n", response))
std.download_file(
- ("https://download.eclipse.org/jdtls/snapshots/jdt-language-server-%s.tar.gz"):format(version),
+ ("https://download.eclipse.org/jdtls/milestones/%s/%s"):format(version, release_file),
"archive.tar.gz"
)
std.untar "archive.tar.gz"
-
- ctx.receipt:with_primary_source {
- type = "jdtls",
- version = version,
- }
end
---@async