Archived
1
This repository has been archived on 2025-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
playbookctl/scripts/playbook.sh
Voomra c584648913 import code
сохранён для истории
2024-04-23 07:41:00 +03:00

150 lines
3.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 $@