Archived
1

import code

сохранён для истории
This commit is contained in:
2024-04-23 07:41:00 +03:00
commit c584648913
6 changed files with 583 additions and 0 deletions

149
scripts/playbook.sh Normal file
View File

@@ -0,0 +1,149 @@
#!/bin/bash
# vi: set tabstop=2 shiftwidth=2 noexpandtab :
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
BASE_DIR=$(cd "$(dirname "$0")"/../ && pwd)
declare -A MAP_COMMAND
declare -A MAP_COMMAND_DESC
declare -A MAP_COMMAND_HELP
################################################################################
# COLORS
################################################################################
CW="\e[1;37m" # White
CG="\e[0;32m" # Green
CY="\e[0;33m" # Yellow
CC="\e[1;36m" # Cyan
BR="\e[41m" # Background Red
BB="\e[44m" # Background Blue
NC="\e[0m" # Reset
################################################################################
# FUNCTIONS
################################################################################
# Заполнение символом.
#
# @param char символ
# @param len сколько раз повторять
function StrFill() {
local __char=$1
local __len=$2
for (( i = 0; i < $__len; i++ )); do
echo -ne $__char
done
}
# Текст в рамке.
#
# @param text текст
function Title() {
local __text="$1"
local __clear_text=$(echo -e "$__text" | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g")
local __size=${#__clear_text}
local __line=$(StrFill "─" $__size+2)
echo -e "${__line}"
echo -e "${__text}"
echo -e "${__line}"
}
# Сообщение об ошибке.
#
# @param text сообщение
function LogError {
echo -e "${BR}${CW}ERR${NC} $@"
}
# Отладочное сообщение.
#
# @param text сообщение
function LogDebug {
if [[ $DD_DEBUG -gt 0 ]]; then
echo -e "${BB}${CW}DBG${NC} $@"
fi
}
# Вывести заголовок скрипта (логотип)
#
function AppHeader() {
Title "${CG}LAUNCHER v3"
echo -e "${NC}"
}
# Табличное представление.
#
# Пример:
# echo "command | description" | as_table
function as_table() {
cat < /dev/stdin | column -d -t -s"|" -o"-"
# cat < /dev/stdin | awk 'BEGIN { FS = "|"}; { printf "%-20s - %-20s\n", $1, $2 }'
}
################################################################################
# HELP COMMAND
################################################################################
MAP_COMMAND["help"]=fn_command_help
MAP_COMMAND_DESC["help"]="показать страницу помощи или страницу помощи указанной команды (help ${CY}<COMMAND>${NC})."
function fn_command_help() {
local __cmd=$1
if [[ -n "$__cmd" ]]; then
${MAP_COMMAND_HELP[$__cmd]}
else
fn_command_help_full
fi
}
function fn_command_help_full() {
echo -e "Использование:\n ${CW}$(basename $0) ${CY}<COMMAND>${NC}"
echo -e "\nКоммнды:"
__text=""
for V in "${!MAP_COMMAND[@]}"; do
__text="${__text} ${CY}${V}${NC} | ${MAP_COMMAND_DESC[$V]}\n"
done
echo -e "$__text" | as_table
}
################################################################################
# IMPORT
################################################################################
for V in $(ls "$SCRIPT_DIR"/scripts.d/*.sh); do
. $V
done
################################################################################
# MAIN
################################################################################
function Main() {
local __args=($@)
local __command=${__args[0]}
if [[ -n $__command ]]; then
for __cmd in $(echo "${!MAP_COMMAND[@]}"); do
if [ $__command = $__cmd ]; then
AppHeader
${MAP_COMMAND[$__cmd]} ${__args[@]:1}
return
fi
done
LogError "Не известная команда '${__command}'"
echo
fi
fn_command_help
}
################################################################################
Main $@