-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathdistribution_version.lua
More file actions
104 lines (94 loc) · 3.01 KB
/
distribution_version.lua
File metadata and controls
104 lines (94 loc) · 3.01 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
100
101
102
103
104
local strings = require("vfox.strings")
local short_name = {
["open"] = "openjdk",
["bsg"] = "bisheng",
["amzn"] = "corretto",
["albba"] = "dragonwell",
["graal"] = "graalvm",
["graalce"] = "graalvm_community",
["oracle"] = "oracle",
["kona"] = "kona",
["librca"] = "liberica",
["nik"] = "liberica_native",
["mandrel"] = "mandrel",
["ms"] = "microsoft",
["sapmchn"] = "sap_machine",
["sem"] = "semeru",
["tem"] = "temurin",
["trava"] = "trava",
["zulu"] = "zulu",
["jb"] = "jetbrains",
}
local long_name={}
local distribution_version={
distributions={}
}
for k,v in pairs(short_name) do
long_name[v]=k
table.insert(distribution_version.distributions,{
name = v,
short_name = k
})
end
function distribution_version.parse_distribution (name)
local distribution_name=long_name[name]
if distribution_name then
-- already a valid long name, just return it
return {
name = name,
short_name = distribution_name
}
end
distribution_name=short_name[name]
if distribution_name then
-- already a valid short name, just return it
return {
name = distribution_name,
short_name = name
}
end
return nil
end
function distribution_version.parse_version (arg)
local version_parts = strings.split(arg, "-")
local version
local distribution
local javafx_bundled = false
-- Check if the last part is "fx" and remove it, setting javafx_bundled flag
if version_parts[#version_parts] == "fx" then
javafx_bundled = true
table.remove(version_parts)
end
if not version_parts[2] then
-- no parts, check if we got a distribution name without version
distribution = distribution_version.parse_distribution(version_parts[1])
if not distribution then
-- no valid distribution found, handle as version with distribution "openjdk"
version=version_parts[1]
distribution = distribution_version.parse_distribution("openjdk")
end
else
-- check if the distribution is in the second part of the string (vfox/sdkman default)
distribution = distribution_version.parse_distribution(version_parts[2])
if distribution then
-- valid distribution found, treat first part as version
version=version_parts[1]
else
-- check if the distribution is in the first part of the string (asdf default)
distribution = distribution_version.parse_distribution(version_parts[1])
if distribution then
-- valid distribution found, treat second part as version
version=version_parts[2]
else
-- invalid distribution name
return nil
end
end
end
return {
version = version,
distribution = distribution,
javafx_bundled = javafx_bundled,
}
end
return distribution_version