diff options
Diffstat (limited to 'lua/mason-registry/index/erlang-ls/init.lua')
| -rw-r--r-- | lua/mason-registry/index/erlang-ls/init.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lua/mason-registry/index/erlang-ls/init.lua b/lua/mason-registry/index/erlang-ls/init.lua new file mode 100644 index 00000000..839f5987 --- /dev/null +++ b/lua/mason-registry/index/erlang-ls/init.lua @@ -0,0 +1,40 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" +local git = require "mason-core.managers.git" +local github = require "mason-core.managers.github" +local Optional = require "mason-core.optional" +local path = require "mason-core.path" + +local rebar3 = platform.is.win and "rebar3.cmd" or "rebar3" + +return Pkg.new { + name = "erlang-ls", + desc = _.dedent [[ + Implementing features such as auto-complete or go-to-definition for a programming language is not trivial. + Traditionally, this work had to be repeated for each development tool and it required a mix of expertise in both + the targeted programming language and the programming language internally used by the development tool of + choice. + ]], + languages = { Pkg.Lang.Erlang }, + categories = { Pkg.Cat.LSP }, + homepage = "https://erlang-ls.github.io/", + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable(rebar3, { help_url = "http://rebar3.org/docs/" }) + + local repo = "erlang-ls/erlang_ls" + local source = github.tag { repo = repo } + source.with_receipt() + git.clone { ("https://github.com/%s.git"):format(repo), version = Optional.of(source.tag) } + + ctx.spawn[rebar3] { "escriptize" } + ctx.spawn[rebar3] { "as", "dap", "escriptize" } + ctx:link_bin( + "erlang_ls", + path.concat { "_build", "default", "bin", platform.is.win and "erlang_ls.bat" or "erlang_ls" } + ) + end, +} |
