blob: 10c337eae9d99a38c9fc10a291ad0037dbc7431c (
plain)
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
|
#!/bin/bash
set -e
declare -r _INSTALL_DIR='/usr/share/java/metals'
declare _CP="$_INSTALL_DIR/lib:$_INSTALL_DIR/metals"
declare -r -A _JAVA_8_ARCH_RUNTIME_TO_PACKAGE=([java-8-openjdk]='jre8-openjdk-headless')
declare -r _JAVA_RUNTIME_PATH_PREFIX='/usr/lib/jvm'
declare -r -A _JAVA_8_ARCH_PACKAGE_PATH_SUFFIXES=([jre8-openjdk-headless]='/java-8-openjdk/jre/bin')
function is_current_java_8 {
local -r _CURRENT_JAVA="$(archlinux-java get)"
if [ -z "${_JAVA_8_ARCH_RUNTIME_TO_PACKAGE[${_CURRENT_JAVA}]}" ]
then
return 1
else
return 0
fi
}
function ensure_java_8 {
if is_current_java_8
then
return 0
else
for _PACKAGE in "${_JAVA_8_ARCH_RUNTIME_TO_PACKAGE[@]}"
do
if [ -z "$_PACKAGE" ]
then
continue
else
local _PACKAGE_SUFFIX="${_JAVA_8_ARCH_PACKAGE_PATH_SUFFIXES[${_PACKAGE}]}"
local _PACKAGE_PATH="$_JAVA_RUNTIME_PATH_PREFIX$_PACKAGE_SUFFIX"
if [ -n "$_PACKAGE_SUFFIX" ] && [ -d "$_PACKAGE_PATH" ]
then
export PATH="$_PACKAGE_PATH:$PATH"
return 0
else
continue
fi
fi
done
echo 'Unable to find a Java 8 environment with certainty. Attempt to use the current environment.' 1>&2
fi
}
function build_cp {
while read -r name
do
_CP="$name:$_CP"
done <<< "$(find "$_INSTALL_DIR"/jars -regex '.*\.jar')"
}
function main {
ensure_java_8
build_cp
# Java options taken from metals-emacs documentation
# https://scalameta.org/metals/docs/editors/emacs.HTML
exec java -XX:+UseG1GC -XX:+UseStringDeduplication -Xss4m -Xms100m -Dmetals.client="$_METALS_CLIENT" -cp "$_CP" scala.meta.metals.Main "$@"
}
main "$@"
|