#! /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