aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-registry/jdtls/init.lua
blob: 19e4440b7d3e3a433a355bc94c8ee73aef727de6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
local Pkg = require "mason-core.package"
local installer = require "mason-core.installer"
local eclipse = require "mason-core.clients.eclipse"
local std = require "mason-core.managers.std"

---@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)

    std.download_file(
        ("https://download.eclipse.org/jdtls/snapshots/jdt-language-server-%s.tar.gz"):format(version),
        "archive.tar.gz"
    )
    std.untar "archive.tar.gz"

    ctx.receipt:with_primary_source {
        type = "jdtls",
        version = version,
    }
end

---@async
local function download_lombok()
    std.download_file("https://projectlombok.org/downloads/lombok.jar", "lombok.jar")
end

return Pkg.new {
    name = "jdtls",
    desc = [[Java language server]],
    homepage = "https://github.com/eclipse/eclipse.jdt.ls",
    languages = { Pkg.Lang.Java },
    categories = { Pkg.Cat.LSP },
    ---@async
    install = function()
        std.ensure_executable "java"
        installer.run_concurrently { download_jdtls, download_lombok }
    end,
}