[BASH] Полезные скрипты для переиспользования
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# source: https://misc.flogisoft.com/bash/tip_colors_and_formatting | |
######################################################## | |
# Иконки | |
######################################################## | |
IINFO="[ i ]" | |
INOTE="[ * ]" | |
IWARN="[ # ]" | |
IERROR="[ ! ]" | |
IFATAL="[ @ ]" | |
ISUCCESS="[ ! ]" | |
IASK="[ ? ]" | |
######################################################## | |
# Атрибуты текста (форматирование) | |
######################################################## | |
BOLD="\e[1m" # жирный | |
DIM="\e[2m" # приглушённый | |
# UNDERL="\e[4m" # подчёркнутый | |
# BLINK="\e[5m" # мигающий | |
# INV="\e[7m" # инвертированный | |
# HIDDEN="\e[8m" # скрытый | |
_BOLD="\e[21m" # нежирный | |
_DIM="\e[22m" # неприглушённый | |
# _BLINK="\e[25m" # немигающий | |
# _UNDERL="\e[24m" # неподчёркнутый | |
# _INV="\e[27m" # неинвертированный | |
# _HIDDEN="\e[28m" # нескрытый | |
NORMAL="\e[20m" # сброс всех атрибутов | |
RESET="\e[0m" # сброс всех атрибутов и цветов (вообще) | |
######################################################## | |
# Цвет текста | |
######################################################## | |
FRESET="\e[39m" # сброс цвета | |
FBLACK="\e[30m" | |
FWHITE="\e[97m" | |
FRED="\e[31m" | |
FGREEN="\e[32m" | |
FYELLOW="\e[33m" | |
FBLUE="\e[34m" | |
FLRED="\e[91m" | |
FLGREEN="\e[92m" | |
FLYELLOW="\e[93m" | |
FLBLUE="\e[94m" | |
######################################################## | |
# Цвет фона текста | |
######################################################## | |
BRESET="\e[49m" # сброс цвета | |
BBLACK="\e[40m" | |
BWHITE="\e[107m" | |
BRED="\e[41m" | |
BGREEN="\e[42m" | |
BYELLOW="\e[43m" | |
BBLUE="\e[44m" | |
BLRED="\e[101m" | |
BLGREEN="\e[102m" | |
BLYELLOW="\e[103m" | |
BLBLUE="\e[104m" | |
######################################################## | |
# Функции для вывода текста | |
######################################################## | |
print() { | |
echo -e "$*${RESET}" | |
} | |
ask() { | |
IFS= read -rp "$(dt)$(print ${BOLD}${BBLUE}${FWHITE}${IASK}${BRESET}\ ${BOLD}$1 ): " $2 | |
} | |
dbg() { | |
print "${DIM}$*" | |
} | |
info() { | |
print "$(dt)${BOLD}${FWHITE}${IINFO}${RESET}${FWHITE} $1 " | |
} | |
note() { | |
print "$(dt)${BOLD}${DIM}${FWHITE}${INOTE}${RESET} $1 " | |
} | |
success() { | |
print "$(dt)${BOLD}${BGREEN}${FWHITE}${ISUCCESS}${BRESET}$FGREEN $1 " | |
} | |
warn() { | |
print "$(dt)${BOLD}${BYELLOW}${FBLACK}${IWARN}${BRESET}${FYELLOW} Warning:${RESET} $1 " >&2 | |
} | |
error() { | |
print "$(dt)${BOLD}${BLRED}${FWHITE}${IERROR} Error: ${BRESET}${FLRED} $1 " >&2 | |
} | |
fatal() { | |
print "$(dt)${BOLD}${BRED}${FWHITE}${IFATAL} FATAL: $1 " >&2 | |
} | |
######################################################## | |
# Тестирование | |
######################################################## | |
# print "print test" | |
# ask "ask test" test | |
# dbg "debug test: answer is $test" | |
# info "info test" | |
# note "note test" | |
# success "success test" | |
# warn "warn test" | |
# error "error test" | |
# fatal "fatal test" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
. ./io.sh | |
######################################################## | |
# Тестировочные функции | |
# Позволяют проверять результаты выполнения команд | |
######################################################## | |
# тестирует выполнение команды с указанными параметрами | |
# $1 - команда для тестирования (обяз) | |
expect_exec() { | |
[ "$1" ] || exit 1 | |
local prefix="`dt`${BOLD}${FWHITE}[TEST EXEC]" | |
if $($1 1>/dev/null 2>&1); then | |
local text="${BGREEN} PASSED" | |
else | |
local text="${BLRED} FAILED" | |
fi | |
print "${prefix} ${text} ${BRESET} ($?):${RESET} $1" | |
} | |
# использование: | |
# func1() { | |
# return 0 | |
# } | |
# func2() { | |
# return 1 | |
# } | |
# expect_exec "func1" # PASSED | |
# expect_exec "func2" # FAILED | |
# expect_exec "whoami" # PASSED | |
# тестирует выполнение команды с указанными параметрами и проверяет вывод | |
# $1 - команда для тестирования (обяз) | |
# $2 - ожидаемый вывод | |
expect_output() { | |
[ "$1" ] || exit 1 | |
[ "$2" ] && local expected="$2" || local expected='' | |
local prefix="`dt`${BOLD}${FWHITE}[TEST OUTP]" | |
local output=$($1 2>&1) | |
local code=$? | |
if [[ "$output" == *"$expected"* ]]; then | |
local text="${BGREEN} PASSED" | |
else | |
local text="${BLRED} FAILED" | |
fi | |
print "${prefix} ${text} ${BRESET} (${code}|${expected}):${RESET} $1" | |
# print "\tOutput > $output" | |
} | |
# использование: | |
# func1() { | |
# echo "some string" | |
# } | |
# func2() { | |
# echo "another string" | |
# } | |
# expect_output "func1" "string" # PASSED | |
# expect_output "func2" "some" # FAILED | |
# expect_output "func2" "string" # PASSED | |
# тестирует выполнение команды с указанными параметрами и проверяет код выхода | |
# $1 - команда для тестирования (обяз) | |
# $2 - ожидаемый код выхода | |
expect_code() { | |
[ "$1" ] || exit 1 | |
[ "$2" ] && local expected=$2 || local expected=0 | |
local prefix="`dt`${BOLD}${FWHITE}[TEST CODE]" | |
$($1 1>/dev/null 2>&1) | |
local code=$? | |
if [[ $code -eq $expected ]]; then | |
local text="${BGREEN} PASSED" | |
else | |
local text="${BLRED} FAILED" | |
fi | |
print "${prefix} ${text} ${BRESET} (${code}|${expected}):${RESET} $1" | |
} | |
# использование: | |
# func1() { | |
# # exit 0 | |
# return 0 | |
# } | |
# func2() { | |
# # exit 1 | |
# return 1 | |
# } | |
# expect_code "func1" 0 # PASSED | |
# expect_code "func1" 1 # FAILED | |
# expect_code "func2" 0 # FAILED | |
# expect_code "func2" 1 # PASSED |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment