diff options
| author | William Boman <william@redwill.se> | 2022-07-17 01:33:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-17 01:33:30 +0200 |
| commit | 23f513d3d2188c3c0c1dface35847b9e9ad53d9b (patch) | |
| tree | cc2ac18c05424d921c0f3a70a5c5d3d3ac5415c6 /lua | |
| parent | docs: add reference link to help (#85) (diff) | |
| download | mason-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.lua | 15 | ||||
| -rw-r--r-- | lua/mason-core/fetch.lua | 1 | ||||
| -rw-r--r-- | lua/mason-core/package/version-check.lua | 18 | ||||
| -rw-r--r-- | lua/mason-registry/jdtls/init.lua | 22 |
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 |
