/
common
executable file
路85 lines (71 loc) 路 1.69 KB
/
common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
# https://stackoverflow.com/a/2684300
if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then
echo "[error] script \"$0\" is intended to be sourced, not executed directly"
exit 1
fi
# Get directory of current script:
#
# https://stackoverflow.com/a/12694189/2103996
# and convert to absolute path:
#
# https://stackoverflow.com/a/4045350/2103996
#
REPO_ROOT=$(cd "${BASH_SOURCE%/*}/.." && pwd)
BIN_DIR="$REPO_ROOT/bin"
export PATH="$BIN_DIR":$PATH
# https://stackoverflow.com/a/5947802/2103996
BOLD='\033[0;1m'
GREEN='\033[1;32m'
PURPLE='\033[1;35m'
RED='\033[1;31m'
RESET='\033[0m'
YELLOW='\033[1;33m'
# No associative arrays in Bash < v4, so can't do:
#
# declare -A LOG_LEVEL
#
LOG_LEVEL_EMERGENCY=0
LOG_LEVEL_ALERT=1
LOG_LEVEL_CRITICAL=2
LOG_LEVEL_ERROR=3
LOG_LEVEL_WARNING=4
LOG_LEVEL_NOTICE=5
LOG_LEVEL_INFO=6
LOG_LEVEL_DEBUG=7
LOG_LEVEL=$LOG_LEVEL_INFO
for VAR in "$@"
do
if [[ $VAR = "--debug" ]]; then
LOG_LEVEL=$LOG_LEVEL_DEBUG
DEBUG=1
elif [[ $VAR = "--quiet" || $VAR = "-q" ]]; then
LOG_LEVEL=$LOG_LEVEL_ERROR
unset DEBUG
fi
done
log_debug() {
if [[ $LOG_LEVEL -ge $LOG_LEVEL_DEBUG ]]; then
echo -e "${PURPLE}[debug] ${RESET} $*" > /dev/stderr
fi
}
log_error() {
if [[ $LOG_LEVEL -ge $LOG_LEVEL_ERROR ]]; then
echo -e "${RED}[error] ${RESET} $*" > /dev/stderr
fi
}
log_info() {
if [[ $LOG_LEVEL -ge $LOG_LEVEL_INFO ]]; then
echo -e "${BOLD}[info] ${RESET} $*" > /dev/stderr
fi
}
log_notice() {
if [[ $LOG_LEVEL -ge $LOG_LEVEL_NOTICE ]]; then
echo -e "${GREEN}[notice] ${RESET} $*" > /dev/stderr
fi
}
log_warn() {
if [[ $LOG_LEVEL -ge $LOG_LEVEL_WARNING ]]; then
echo -e "${YELLOW}[warning]${RESET} $*" > /dev/stderr
fi
}