blob: 853143e19d599b5e7ff205cca6a89369d2095da2 (
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
|
# -*-eselect-*- vim: ft=eselect
# Copyright 2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2 or later
# $Id: $
DESCRIPTION="Manage the /usr/bin/gradle symlink"
MAINTAINER=""
VERSION=0.1
# find a list of gradle symlink targets
find_targets() {
local f
for f in "${EROOT}"/usr/bin/gradle?(-bin)-[[:digit:]]*; do
[[ -x ${f} ]] && basename "${f}"
done
}
remove_symlink() {
rm "${EROOT}/usr/bin/gradle" \
|| die -q "Could not remove symlink"
}
set_symlink() {
local target=$1
if is_number "${target}"; then
local targets=( $(find_targets) )
target=${targets[target-1]}
fi
[[ -z ${target} ]] \
&& die -q "Target \"${1}\" doesn't apper to be valid!"
[[ ! -x ${EROOT}/usr/bin/${target} ]] \
&& die -q "${EROOT}/usr/bin/${target} is not an executable"
ln -s "${target}" "${EROOT}/usr/bin/gradle" \
|| die -q "Could not set symlink"
}
describe_show() {
echo "Shows the current gradle symlink"
}
do_show() {
write_list_start "Current gradle symlink:"
if [[ -L ${EROOT}/usr/bin/gradle ]]; then
local gradle=$(cannonicalise "${EROOT}/usr/bin/gradle")
write_kv_list_entry "${gradle}" ""
else
write_kv_list_entry "(unset)" ""
fi
}
describe_list() {
echo "list available gradle symlink targets"
}
do_list() {
local i targets=( $(find_targets) )
write_list_start "Available gradle symlink targets:"
for (( i = 0; i < ${#targets[@]}; i++ )); do
# highligh the target where the symlink is pointing to
[[ ${targets[i]} = \
$(basename "$(canonicalise "${EROOT}/usr/bin/gradle")") ]] \
&& targets[i]=$(highlight_marker "${targets[i]}")
done
write_numbered_list -m "(none found)" "${targets[@]}"
}
describe_set() {
echo "Set a new gradle symlink target"
}
describe_set_parameters() {
echo "<target>"
}
describe_set_options() {
echo "target : Target name or number (from 'list' action)"
}
do_set() {
[[ -z $1 ]] && die -q "You didn't tell me what to set the symlink to"
[[ $# -gt 1 ]] && die -q "Too many parameters"
test_for_root
if [[ -L ${EROOT}/usr/bin/gradle ]]; then
# existing symmlink
remove_symlink
set_symlink "$1"
elif [[ -e ${EROOT}/usr/bin/gradle ]]; then
# we have someting strange
die -q "${EROOT}/usr/bin/gradle exists but is not a symlink"
else
set_symlink "$1"
fi
}
describe_update() {
echo "Automatically update the gradle symlink"
}
describe_update_options() {
echo "ifunset: Do not override currently set version"
}
do_update() {
[[ -z $1 || $1 == ifunset ]] || die -q "Usage error"
[[ $# -gt 1 ]] && die -q "Too many parameters"
test_for_root
if [[ -L ${EROOT}/usr/bin/gradle ]]; then
if [[ $1 == ifunset && -e ${EROOT}/usr/bin/gradle ]]; then
return
fi
remove_symlink
elif [[ -e ${EROOT}/usr/bin/gradle ]]; then
die -q "${EROOT}/usr/bin/gradle exists but is not a symlink"
fi
local targets=( $(find_targets) )
if [[ ${#targets[@]} -gt 0 ]]; then
set_symlink "${targets[${#targets[@]}-1]}"
fi
}
test_for_root() {
[[ -w ${EROOT}/usr/bin ]] || die -q "${EROOT}/usr/bin not writeable by current user. Are you root?"
}
|