-
-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathplugins.lua
More file actions
50 lines (41 loc) · 1.55 KB
/
plugins.lua
File metadata and controls
50 lines (41 loc) · 1.55 KB
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
46
47
48
49
50
local M = {}
function M.get_plugin_version_map(config)
return {
['java-test'] = config.java_test.version,
['java-debug'] = config.java_debug_adapter.version,
['spring-boot-tools'] = config.spring_boot_tools.version,
}
end
---Returns a list of .jar file paths for given list of jdtls plugins
---@param config java.Config
---@param plugins string[]
---@return string[] # list of .jar file paths
function M.get_plugins(config, plugins)
local file = require('java-core.utils.file')
local List = require('java-core.utils.list')
local Manager = require('pkgm.manager')
local path = require('java-core.utils.path')
local err = require('java-core.utils.errors')
local str = require('java-core.utils.str')
local plugin_version_map = M.get_plugin_version_map(config)
return List:new(plugins)
:map(function(plugin_name)
local version = plugin_version_map[plugin_name]
local pkg_path = Manager:get_install_dir(plugin_name, version)
local plugin_root = path.join(pkg_path, 'extension')
local package_json_str = vim.fn.readfile(path.join(plugin_root, 'package.json'))
local package_json = vim.json.decode(table.concat(package_json_str, '\n'))
local java_extensions = package_json.contributes.javaExtensions
local ext_jars = file.resolve_paths(plugin_root, java_extensions)
if #ext_jars ~= #java_extensions then
err.throw(
str
.multiline('Failed to load some jars for "%s"', 'Expected %d jars but only %d found')
:format(plugin_name, #java_extensions, #ext_jars)
)
end
return ext_jars
end)
:flatten()
end
return M