aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/servers/vala_ls/init.lua
blob: 5ed52b4e4d7d1eb98aa100ec4a52a3d93478d9d1 (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
42
43
44
45
local server = require "nvim-lsp-installer.server"
local path = require "nvim-lsp-installer.path"
local std = require "nvim-lsp-installer.installers.std"
local context = require "nvim-lsp-installer.installers.context"
local installers = require "nvim-lsp-installer.installers"
local process = require "nvim-lsp-installer.process"

return function(name, root_dir)
    return server.Server:new {
        name = name,
        root_dir = root_dir,
        homepage = "https://wiki.gnome.org/Projects/Vala",
        installer = {
            std.ensure_executables {
                { "meson", "meson was not found in path. Refer to https://mesonbuild.com/Getting-meson.html" },
                { "ninja", "ninja was not found in path. Refer to https://ninja-build.org/" },
                { "valac", "valac was not found in path. Refer to https://wiki.gnome.org/Projects/Vala" },
            },
            context.github_release_file("Prince781/vala-language-server", function(version)
                return ("vala-language-server-%s.tar.xz"):format(version)
            end),
            context.capture(function(ctx)
                return installers.pipe {
                    std.untarxz_remote(ctx.github_release_file),
                    std.rename(("vala-language-server-%s"):format(ctx.requested_server_version), "vala-language-server"),
                }
            end),
            function(server, callback, context)
                local c = process.chain {
                    cwd = path.concat { server.root_dir, "vala-language-server" },
                    stdio_sink = context.stdio_sink,
                }

                c.run("meson", { ("-Dprefix=%s"):format(server.root_dir), "build" })
                c.run("ninja", { "-C", "build", "install" })

                c.spawn(callback)
            end,
            std.rmrf "vala-language-server",
        },
        default_options = {
            cmd = { path.concat { root_dir, "bin", "vala-language-server" } },
        },
    }
end