Skip to content

Instantly share code, notes, and snippets.

@anthonyaxenov
Last active Jan 30, 2021
Embed
What would you like to do?
[BASH] Полезные скрипты для переиспользования
#!/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 "print test"
# print
# 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"
#!/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