summaryrefslogtreecommitdiffstats
path: root/policy-management/src/main/server-gen/bin/options
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