diff --git a/src/main/bash/gvm-main.sh b/src/main/bash/gvm-main.sh index c0ca9288..19248313 100644 --- a/src/main/bash/gvm-main.sh +++ b/src/main/bash/gvm-main.sh @@ -17,57 +17,9 @@ # function gvm { - # - # Various sanity checks and default settings - # - __gvmtool_default_environment_variables - - mkdir -p "${GVM_DIR}" - - if [[ "$GVM_FORCE_OFFLINE" == "true" || ( "$1" == "offline" && "$2" == "enable" ) ]]; then - BROADCAST_LIVE="" - else - BROADCAST_LIVE=$(curl -s "${GVM_SERVICE}/broadcast/${GVM_VERSION}") - fi - - if [[ -z "${BROADCAST_LIVE}" && "${GVM_ONLINE}" == "true" && "$1" != "offline" ]]; then - echo "${OFFLINE_BROADCAST}" - fi - - if [[ -n "${BROADCAST_LIVE}" && "${GVM_ONLINE}" == "false" ]]; then - echo "${ONLINE_BROADCAST}" - fi - - if [[ -z "${BROADCAST_LIVE}" ]]; then - GVM_ONLINE="false" - GVM_AVAILABLE="false" - else - GVM_ONLINE="true" - fi - - - __gvmtool_check_upgrade_available - if [[ "${UPGRADE_AVAILABLE}" == "true" && "$1" != "broadcast" && "$1" != "selfupdate" ]]; then - echo "${BROADCAST_LIVE}" - echo "" - else - __gvmtool_update_broadcast "$1" - fi - - # Load the gvm config if it exists. - if [ -f "${GVM_DIR}/etc/config" ]; then - source "${GVM_DIR}/etc/config" - fi COMMAND="$1" - CANDIDATE="$2" - shift; shift - - # no command provided - if [[ -z "$COMMAND" ]]; then - __gvmtool_help - return 1 - fi + QUALIFIER="$2" case "$COMMAND" in l) @@ -88,46 +40,94 @@ function gvm { COMMAND="default";; esac + # + # Various sanity checks and default settings + # + __gvmtool_default_environment_variables + + mkdir -p "$GVM_DIR" + + if [[ "$GVM_FORCE_OFFLINE" == "true" || ( "$COMMAND" == "offline" && "$QUALIFIER" == "enable" ) ]]; then + BROADCAST_LIVE="" + else + BROADCAST_LIVE=$(curl -s "${GVM_SERVICE}/broadcast/${GVM_VERSION}") + fi + + if [[ -z "$BROADCAST_LIVE" && "$GVM_ONLINE" == "true" && "$COMMAND" != "offline" ]]; then + echo "$OFFLINE_BROADCAST" + fi + + if [[ -n "$BROADCAST_LIVE" && "$GVM_ONLINE" == "false" ]]; then + echo "$ONLINE_BROADCAST" + fi + + if [[ -z "$BROADCAST_LIVE" ]]; then + GVM_ONLINE="false" + GVM_AVAILABLE="false" + else + GVM_ONLINE="true" + fi + + + __gvmtool_check_upgrade_available + if [[ "$UPGRADE_AVAILABLE" == "true" && "$COMMAND" != "broadcast" && "$COMMAND" != "selfupdate" ]]; then + echo "$BROADCAST_LIVE" + echo "" + else + __gvmtool_update_broadcast "$COMMAND" + fi + + # Load the gvm config if it exists. + if [ -f "${GVM_DIR}/etc/config" ]; then + source "${GVM_DIR}/etc/config" + fi + + # no command provided + if [[ -z "$COMMAND" ]]; then + __gvmtool_help + return 1 + fi + # Check if it is a valid command CMD_FOUND="" CMD_TARGET="${GVM_DIR}/src/gvm-${COMMAND}.sh" - if [[ -f "${CMD_TARGET}" ]]; then - CMD_FOUND="${CMD_TARGET}" + if [[ -f "$CMD_TARGET" ]]; then + CMD_FOUND="$CMD_TARGET" fi # Check if it is a sourced function - CMD_TARGET="${GVM_DIR}/ext/gvm-${COMMAND}" - if [[ -f "${CMD_TARGET}" ]]; then - CMD_FOUND="${CMD_TARGET}" + CMD_TARGET="${GVM_DIR}/ext/gvm-${COMMAND}.sh" + if [[ -f "$CMD_TARGET" ]]; then + CMD_FOUND="$CMD_TARGET" fi # couldn't find the command - if [[ -z "${CMD_FOUND}" ]]; then - echo "Invalid command: ${COMMAND}" + if [[ -z "$CMD_FOUND" ]]; then + echo "Invalid command: $COMMAND" __gvmtool_help fi # Check whether the candidate exists - if [[ -n "${CANDIDATE}" && "${COMMAND}" != "offline" && -z $(echo ${GVM_CANDIDATES[@]} | grep -w "${CANDIDATE}") ]]; then - echo -e "\nStop! ${CANDIDATE} is not a valid candidate." + if [[ -n "$QUALIFIER" && "$COMMAND" != "offline" && -z $(echo ${GVM_CANDIDATES[@]} | grep -w "$QUALIFIER") ]]; then + echo -e "\nStop! $QUALIFIER is not a valid candidate." return 1 fi - if [[ "${COMMAND}" == "offline" && -z "${CANDIDATE}" ]]; then + if [[ "$COMMAND" == "offline" && -z "$QUALIFIER" ]]; then echo -e "\nStop! Specify a valid offline mode." - elif [[ "${COMMAND}" == "offline" && ( -z $(echo "enable disable" | grep -w "${CANDIDATE}")) ]]; then - echo -e "\nStop! ${CANDIDATE} is not a valid offline mode." + elif [[ "$COMMAND" == "offline" && ( -z $(echo "enable disable" | grep -w "$QUALIFIER")) ]]; then + echo -e "\nStop! $QUALIFIER is not a valid offline mode." fi # Check whether the command exists as an internal function... # # NOTE Internal commands use underscores rather than hyphens, # hence the name conversion as the first step here. - CONVERTED_CMD_NAME=$(echo "${COMMAND}" | tr '-' '_') + CONVERTED_CMD_NAME=$(echo "$COMMAND" | tr '-' '_') # Execute the requested command - if [ -n "${CMD_FOUND}" ]; then + if [ -n "$CMD_FOUND" ]; then # It's available as a shell function - __gvmtool_"${CONVERTED_CMD_NAME}" "${CANDIDATE}" $@ + __gvmtool_"$CONVERTED_CMD_NAME" "$QUALIFIER" "$3" "$4" fi }