blob: 182567142985dc799c9bf288b3f76bc1343e560b (
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
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: $
# Based on kernel.eselect
DESCRIPTION="Manage the Java system and user VM"
MAINTAINER="java@gentoo.org"
SVN_DATE='$Date: $'
VERSION=$(svn_date_to_version "${SVN_DATE}" )
VM_BASE=/usr/lib/jvm/
VM_SYSTEM=/etc/java-config/system-vm
VM_USER=${HOME}/.gentoo/user-vm
find_targets() {
local f
for f in ${VM_BASE}/* ; do
[[ -L ${f} ]] && echo $(basename ${f})
done
}
sym_to_vm() {
basename $(readlink "${1}")
}
### show action ###
describe_show() {
echo "Show the current vm"
}
do_show() {
if [[ ${1} == "system" ]]; then
my_show ${VM_SYSTEM} 'system-vm'
elif [[ ${1} == "user" ]]; then
my_show ${VM_USER} 'user-vm'
else
my_show ${VM_SYSTEM} 'system-vm'
my_show ${VM_USER} 'user-vm'
fi
}
my_show() {
local symlink=${1} vm_type=${2}
write_list_start "Current ${vm_type}"
if [[ -L "${symlink}" ]] ; then
write_kv_list_entry "$(sym_to_vm ${symlink})" ""
else
write_kv_list_entry "(unset)" ""
fi
}
### list action ###
describe_list() {
echo "List available vms"
}
do_list() {
targets=( $(find_targets) )
write_list_start "Available java vms:"
if [[ -n ${targets[@]} ]] ; then
local i system_name user_name
[[ -L ${VM_SYSTEM} ]] && system_name=$(sym_to_vm ${VM_SYSTEM})
[[ -L ${VM_USER} ]] && user_name=$(sym_to_vm ${VM_USER})
for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
if [[ ${targets[${i}]} == ${system_name} ]]; then
targets[${i}]="${targets[${i}]} $(highlight 'system-vm')"
fi
if [[ ${targets[${i}]} == ${user_user} ]]; then
targets[${i}]="${targets[${i}]} $(highlight 'user-vm' )"
fi
done
write_numbered_list "${targets[@]}"
else
write_kv_list_entry "(none found)" ""
fi
}
### set action ###
describe_set() {
echo "Set a new system vm"
}
do_set() {
if [[ ${#} != 2 ]]; then
die -q "Usage [user|system] [vm]"
elif [[ ${1} == "system" ]]; then
if [[ -w $(dirname ${VM_SYSTEM}) ]]; then
my_set ${VM_SYSTEM} ${2}
else
die -q "Sorry, you don't have enough premission to set system"
fi
elif [[ ${1} == "user" ]]; then
my_set ${VM_USER} ${2}
fi
}
my_set() {
local target=${2} symlink=${1}
if [[ -z ${target} ]] ; then
die -q "You didn't tell me what to set the symlink to"
elif [[ -L "${symlink}" ]] ; then
set_symlink "${target}" "${symlink}" || die -q "Couldn't set a new symlink"
elif [[ -e "${symlink}" ]] ; then
die -q "Sorry, ${symlink}"
else
set_symlink "${target}" "${symlink}"|| die -q "Couldn't set a new symlink"
fi
}
set_symlink() {
local target=${1} symlink=${2}
if is_number "${target}" ; then
targets=( $(find_targets) )
target=${targets[$(( ${target} - 1 ))]}
fi
if [[ -z ${target} ]] ; then
die -q "Target \"${1}\" doesn't appear to be valid!"
elif [[ -d "${VM_BASE}/${target}" ]] ; then
local sym_dir=$(dirname ${symlink})
if [[ ! -d ${sym_dir} ]]; then
mkdir -p ${sym_dir} || die -q "Could not create ${my_dir}"
fi
ln -snf "${VM_BASE}/${target}" "${symlink}"
else
die -q "Target \"${1}\" doesn't appear to be valid!"
fi
}
# vim: set ft=eselect :
|