import code
сохранён для истории
This commit is contained in:
149
scripts/playbook.sh
Normal file
149
scripts/playbook.sh
Normal 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 $@
|
||||
Reference in New Issue
Block a user