-
-
Notifications
You must be signed in to change notification settings - Fork 94
Expand file tree
/
Copy pathresolve.lua
More file actions
99 lines (77 loc) · 2.32 KB
/
Copy pathresolve.lua
File metadata and controls
99 lines (77 loc) · 2.32 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
local Manager = require('pkgm.manager')
local path = require('java-core.utils.path')
local err = require('java-core.utils.errors')
local system = require('java-core.utils.system')
local M = {}
local manager = Manager()
local function has_path(config)
return config.path ~= nil and config.path ~= ''
end
local function can_auto_install(config)
return config.auto_install ~= false
end
---@param name string
---@param config { version: string, path?: string, auto_install?: boolean }
---@return string
function M.install(name, config)
if has_path(config) then
return config.path
end
if not can_auto_install(config) then
err.throw(('nvim-java: %s auto_install disabled and no path configured'):format(name))
end
return manager:install(name, config.version)
end
---@param name string
---@param config { version: string, path?: string }
---@return string
function M.get_install_dir(name, config)
if has_path(config) then
return config.path
end
return manager:get_install_dir(name, config.version)
end
---@param name string
---@param config { version: string, path?: string }
---@return string
function M.get_extension_root(name, config)
if has_path(config) then
return config.path
end
return path.join(M.get_install_dir(name, config), 'extension')
end
---@param config java.Config
---@return string
function M.get_jdtls_root(config)
return M.get_install_dir('jdtls', config.jdtls)
end
---@param config java.Config
---@return string
function M.get_lombok_path(config)
if has_path(config.lombok) then
return config.lombok.path
end
local lombok_root = M.get_install_dir('lombok', config.lombok)
local lombok_jar_pattern = path.join(lombok_root, 'lombok*.jar')
local lombok_jar = vim.fn.glob(lombok_jar_pattern)
if lombok_jar == '' then
err.throw('nvim-java: lombok jar not found at ' .. lombok_jar_pattern)
end
return lombok_jar
end
---@param config java.Config
---@return string
function M.get_jdk_home(config)
if has_path(config.jdk) then
return config.jdk.path
end
if not can_auto_install(config.jdk) then
err.throw('nvim-java: jdk auto_install disabled and no path configured')
end
local jdk_root = M.get_install_dir('openjdk', config.jdk)
if system.get_os() == 'mac' then
return vim.fn.glob(path.join(jdk_root, 'jdk-*', 'Contents', 'Home'))
end
return vim.fn.glob(path.join(jdk_root, 'jdk-*'))
end
return M