#!/bin/bash

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

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

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

# Получаем имя модуля
module_name=$1
# Получаем задаваемый режим
mode=$(echo $2 | tr '[:lower:]' '[:upper:]')

#================================================================================
# main
#================================================================================
globalResult=0

if ! check_module_exists "$module_name"; then
	# Модуль должен существовать!
	globalResult=1
	echoerr "${ERROR_TEXT} Not found module : $module_name"
else
	# Модуль существует
	if [[ "$mode" == "$MODE_OFF" ]]; then
		# Если модуль загружен
		if check_module_is_loaded "$module_name"; then
			echo -e "${PROCESS_TEXT} Unloading module $module_name ..."
			modprobe -r "$module_name" 2>&1 >/dev/null
			globalResult=$?
		fi
		# Выводим статус загрузки модуля
		print_module_loading_status "$module_name"

	elif [[ "$mode" == "$MODE_ON" ]]; then
		# Если модуль не загружен
		if ! check_module_is_loaded "$module_name"; then
			echo -e "${PROCESS_TEXT} Loading module $module_name ..."
			modprobe "$module_name"
			globalResult=$?
		fi
		# Выводим статус загрузки модуля
		print_module_loading_status "$module_name"

	elif [[ "$mode" == "$MODE_STATUS" ]]; then
		# Выводим статус загрузки модуля
		print_module_loading_status "$module_name"
	else
		globalResult=1
		echoerr "${ERROR_TEXT} Unknow mode: $mode"
	fi
fi

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