aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/servers/jdtls/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/servers/jdtls/init.lua')
-rw-r--r--lua/nvim-lsp-installer/servers/jdtls/init.lua30
1 files changed, 28 insertions, 2 deletions
diff --git a/lua/nvim-lsp-installer/servers/jdtls/init.lua b/lua/nvim-lsp-installer/servers/jdtls/init.lua
index 4f3779b6..ddc00c26 100644
--- a/lua/nvim-lsp-installer/servers/jdtls/init.lua
+++ b/lua/nvim-lsp-installer/servers/jdtls/init.lua
@@ -4,6 +4,7 @@ local std = require "nvim-lsp-installer.installers.std"
local context = require "nvim-lsp-installer.installers.context"
local platform = require "nvim-lsp-installer.platform"
local Data = require "nvim-lsp-installer.data"
+local fetch = require "nvim-lsp-installer.core.fetch"
return function(name, root_dir)
local function get_cmd(workspace_name)
@@ -49,13 +50,38 @@ return function(name, root_dir)
languages = { "java" },
homepage = "https://github.com/eclipse/eclipse.jdt.ls",
installer = {
+ ---@type ServerInstallerFunction
+ function(_, callback, ctx)
+ if ctx.requested_server_version then
+ callback(true)
+ return
+ end
+ fetch("https://download.eclipse.org/jdtls/snapshots/latest.txt", function(err, data)
+ if err then
+ ctx.stdio_sink.stderr "Failed to fetch latest verison.\n"
+ callback(false)
+ else
+ ctx.requested_server_version = vim.trim(data)
+ :gsub("^jdt%-language%-server%-", "")
+ :gsub("%.tar%.gz$", "")
+ callback(true)
+ end
+ end)
+ end,
context.capture(function(ctx)
- local version = ctx.requested_server_version or "latest"
return std.untargz_remote(
- ("https://download.eclipse.org/jdtls/snapshots/jdt-language-server-%s.tar.gz"):format(version)
+ ("https://download.eclipse.org/jdtls/snapshots/jdt-language-server-%s.tar.gz"):format(
+ ctx.requested_server_version
+ )
)
end),
std.download_file("https://projectlombok.org/downloads/lombok.jar", "lombok.jar"),
+ context.receipt(function(receipt, ctx)
+ receipt:with_primary_source {
+ type = "jdtls",
+ version = ctx.requested_server_version,
+ }
+ end),
},
default_options = {
cmd = get_cmd(vim.env.WORKSPACE and vim.env.WORKSPACE or path.concat { vim.env.HOME, "workspace" }),