blob: a9ae71257a7d15634a7e14da62fc9bd2ab37b340 (
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
|
#! /bin/bash
lib=${POLICY_HOME}/lib
opt=${lib}/opt
# change to the options directory
cd ${opt}
# default field lengths
nameLength=20
versionLength=15
# update field lengths, if needed
for jar in $(ls) ; do
# get file name without 'jar' suffix
tmp="${jar%\.jar}"
# get feature name by removing the version portion
name="${tmp%%-[0-9]*}"
# extract version portion of name
version="${tmp#${name}-}"
# grow the size of the name/version field, if needed
if (( "${#name}" > nameLength )) ; then
nameLength="${#name}"
fi
if (( "${#version}" > versionLength )) ; then
versionLength="${#version}"
fi
done
# dump out status information
function status
{
local tmp name version status
local format="%-${nameLength}s %-${versionLength}s %s\n"
printf "${format}" "name" "version" "status"
printf "${format}" "----" "-------" "------"
for jar in $(ls) ; do
# get file name without 'jar' suffix
tmp="${jar%\.jar}"
# get feature name by removing the version portion
name="${tmp%%-[0-9]*}"
# extract version portion of name
version="${tmp#${name}-}"
# determine status
status=disabled
if [[ -e "${lib}/${jar}" ]] ; then
status=enabled
fi
printf "${format}" "${name}" "${version}" "${status}"
done
}
case "$1" in
status)
{
# dump out status information
status
};;
enable)
{
# enable the specified options
shift
match=
for name in "$@" ; do
# look for matches - 'file' has the full path name
file=$(ls ${opt}/"${name}"-[0-9]* 2>/dev/null)
if [[ "$?" != 0 ]] ; then
# no matching file
echo "${name}: no such option"
else
# found a match (handle multiple matches, just in case)
match=true
ln -s -f ${file} "${lib}/"
fi
done
if [[ "${match}" ]] ; then
echo
status
fi
};;
disable)
{
# disable the specified options
shift
match=
for name in "$@" ; do
# look for matches -- 'file' has the last segment of the path name
file=$(ls "${name}"-[0-9]* 2>/dev/null)
if [[ "$?" != 0 ]] ; then
echo "${name}: no such option"
else
# found a match (handle multiple matches, just in case)
match=true
(cd ${lib} ; rm -f ${file})
fi
done
if [[ "${match}" ]] ; then
echo
status
fi
};;
*)
{
# print out usage information
cat >&2 <<-'EOF'
Usage: options status
Get enabled/disabled status on all options
options enable <option> ...
Enable the specified options
options disable <option> ...
Disable the specified options
EOF
};;
esac
exit
|