#!/bin/bash

#================================================================================
# Инициализация
#================================================================================

# Определяем местоположение скрипта
SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
# Импортируем общие функции
source $SCRIPT_PATH/console_colors
source $SCRIPT_PATH/errors_func
source $SCRIPT_PATH/super_user_check
source $SCRIPT_PATH/switch_functions
source $SCRIPT_PATH/switch-dbus-functions

# Проверяем права суперпользователя
check_root_rights

#================================================================================
# main
#================================================================================
globalResult=$SUCCESS_CODE
MODE=$(echo $1 | tr '[:lower:]' '[:upper:]')
SWITCH_NAME="$2"

if [[ ! ${POSSIBLE_MODULES[@]} =~ $SWITCH_NAME ]]
then
    globalResult=$ERROR_CODE
    echoerr "${ERROR_TEXT} Unknown module: $SWITCH_NAME"
else

    case "$MODE" in

    "$MODE_HELP" )
        printHelp "$SWITCH_NAME"
    ;;

    "$MODE_EXISTS" )
        printModuleExists "$SWITCH_NAME"
    ;;

    "$MODE_STATUS" )
        printModuleStatus "$SWITCH_NAME"
    ;;

    "$MODE_OFF" )
        if ! $(checkModuleAvailable "$SWITCH_NAME"); then
            globalResult=$NOT_AVAILABLE_CODE
            echo -e "${WARNING_TEXT} The module is not supported on this hardware!"
        else
            if ! $(checkModuleBloking "$SWITCH_NAME"); then
                echo -e "${PROCESS_TEXT} The $SWITCH_NAME module is being blocked..."
                switchSetBloking "$SWITCH_NAME" "true"
                globalResult=$?
            fi

            printModuleStatus "$SWITCH_NAME"
        fi
    ;;

    "$MODE_ON" )
        if ! $(checkModuleAvailable "$SWITCH_NAME"); then
            globalResult=$NOT_AVAILABLE_CODE
            echo -e "${WARNING_TEXT} The module is not supported on this hardware!"
        else

            if $(checkModuleBloking "$SWITCH_NAME"); then
                echo -e "${PROCESS_TEXT} The $SWITCH_NAME module is being unblocked..."
                switchSetBloking "$SWITCH_NAME" "false"
                globalResult=$?
            fi

            printModuleStatus "$SWITCH_NAME"
        fi
    ;;

    *)
        globalResult=$ERROR_CODE
        echoerr "${ERROR_TEXT} Unknown command: $MODE"
    ;;

    esac

fi

exit $globalResult
#================================================================================
