#!/bin/bash

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

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

#================================================================================
# Функции
#================================================================================
## get_module_path
## @brief - Функция вернёт путь к файлу модулю ядра
## @param $1 - Имя проверяемого модуля
## @return Вернёт путь к файлу модулю ядра
function get_module_path() {
        echo $(modinfo $1 2>&1 | grep filename | awk '{print $2}')
}

## check_module_exists
## @brief - Функция вернёт признак существования модуля ядра
## @param $1 - Имя проверяемого модуля
## @return Вернёт булиево значение существования модуля
function check_module_exists() {
        [[ -f "$(get_module_path $1)" ]]
}

## print_module_exists
## @brief - Функция напечатает текущий статус существования модуля
## @param $1 - Имя проверяемого модуля
function print_module_exists() {
        echo -e -n "${STATUS_TEXT} Module $1 "
        if check_module_exists $1; then echo -e "${Green}successfully found${Color_Off}."; else echo -e "${Red}not found${Color_Off}."; fi
}

## @check_module_is_loaded
## @brief - Функция проверит загружен ли указанный модуль
## @param $1 - Имя проверяемого модуля
## @return Вернёт булиево значение загруженности модуля
function check_module_is_loaded() {
        [[ $1 == $(lsmod | awk '{print $1}' | grep $1) ]]
}

## @print_module_loading_status
## @brief - Функция напечатает текущий статус загрузки модуля
## @param $1 - Имя проверяемого модуля
function print_module_loading_status() {
        echo -e -n "${STATUS_TEXT} Module $1 "
        if check_module_is_loaded $1; then echo -e "${Green}is loaded${Color_Off}."; else echo -e "${Red}isn't loaded${Color_Off}."; fi
}

## @check_module_can_boot
## @brief - Функция проверит разрешена ли загрузка указанного модуля
## @param $1 - Имя проверяемого модуля
## @return Вернёт булиево значение загружаемости модуля
function check_module_can_boot() {
        [[ "blacklist $1" != $(grep "blacklist $1" $MODPROBE_CONFIG) ]]
}

## @print_module_boot_status
## @brief - Функция напечатает текущий статус возможности загрузки модуля
## @param $1 - Имя проверяемого модуля
function print_module_boot_status() {
        echo -e -n "${STATUS_TEXT} Module $1 "
        if check_module_can_boot $1; then echo -e  "${Green}can boot${Color_Off}."; else echo -e "${Red}can't boot${Color_Off}."; fi
}

#================================================================================
