1
- # approvals.bash v0.5.0
1
+ # approvals.bash v0.5.1
2
2
#
3
3
# Interactive approval testing for Bash.
4
4
# https://github.com/DannyBen/approvals.bash
@@ -54,6 +54,10 @@ context() {
54
54
printf " $context_string \n" " $* "
55
55
}
56
56
57
+ it () {
58
+ printf " $it_string \n" " $* "
59
+ }
60
+
57
61
fail () {
58
62
printf " $fail_string \n" " $* "
59
63
exit 1
@@ -72,29 +76,57 @@ expect_exit_code() {
72
76
fi
73
77
}
74
78
75
- bold () { printf " \e[1m%b\e[0m\n" " $* " ; }
76
- blue () { printf " \e[34m%b\e[0m\n" " $* " ; }
77
- cyan () { printf " \e[36m%b\e[0m\n" " $* " ; }
78
- green () { printf " \e[32m%b\e[0m\n" " $* " ; }
79
- magenta () { printf " \e[35m%b\e[0m\n" " $* " ; }
80
- red () { printf " \e[31m%b\e[0m\n" " $* " ; }
81
- yellow () { printf " \e[33m%b\e[0m\n" " $* " ; }
82
-
83
79
# Private
84
80
81
+ print_in_color () {
82
+ local color=" $1 "
83
+ shift
84
+ if [[ -z ${NO_COLOR+x} ]]; then
85
+ printf " $color %b\e[0m\n" " $* "
86
+ else
87
+ printf " %b\n" " $* "
88
+ fi
89
+ }
90
+
91
+ red () { print_in_color " \e[31m" " $* " ; }
92
+ green () { print_in_color " \e[32m" " $* " ; }
93
+ yellow () { print_in_color " \e[33m" " $* " ; }
94
+ blue () { print_in_color " \e[34m" " $* " ; }
95
+ magenta () { print_in_color " \e[35m" " $* " ; }
96
+ cyan () { print_in_color " \e[36m" " $* " ; }
97
+ bold () { print_in_color " \e[1m" " $* " ; }
98
+ underlined () { print_in_color " \e[4m" " $* " ; }
99
+ red_bold () { print_in_color " \e[1;31m" " $* " ; }
100
+ green_bold () { print_in_color " \e[1;32m" " $* " ; }
101
+ yellow_bold () { print_in_color " \e[1;33m" " $* " ; }
102
+ blue_bold () { print_in_color " \e[1;34m" " $* " ; }
103
+ magenta_bold () { print_in_color " \e[1;35m" " $* " ; }
104
+ cyan_bold () { print_in_color " \e[1;36m" " $* " ; }
105
+ red_underlined () { print_in_color " \e[4;31m" " $* " ; }
106
+ green_underlined () { print_in_color " \e[4;32m" " $* " ; }
107
+ yellow_underlined () { print_in_color " \e[4;33m" " $* " ; }
108
+ blue_underlined () { print_in_color " \e[4;34m" " $* " ; }
109
+ magenta_underlined () { print_in_color " \e[4;35m" " $* " ; }
110
+ cyan_underlined () { print_in_color " \e[4;36m" " $* " ; }
111
+
85
112
user_approval () {
86
113
local cmd=" $1 "
87
114
local actual=" $2 "
88
115
local approval_file=" $3 "
89
116
90
- if [[ -v CI || -v GITHUB_ACTIONS ]]; then
117
+ if [[ -v CI || -v GITHUB_ACTIONS ]] && [[ -z " ${AUTO_APPROVE+x} " ]] ; then
91
118
fail " $cmd "
92
119
fi
93
120
94
- echo
95
- printf " $approval_string "
96
- response=$( bash -c " read -n 1 key; echo \$ key" )
97
- printf " \b%.s" $( seq 1 $(( ${# approval_string} + 1 )) )
121
+ if [[ -v AUTO_APPROVE ]]; then
122
+ response=a
123
+ else
124
+ echo
125
+ printf " $approval_string "
126
+ response=$( bash -c " read -n 1 key; echo \$ key" )
127
+ printf " \b%.s" $( seq 1 $(( ${# approval_string} + 1 )) )
128
+ fi
129
+
98
130
if [[ $response =~ [Aa] ]]; then
99
131
printf " %b\n" " $actual " > " $approval_file "
100
132
pass " $cmd "
@@ -122,14 +154,15 @@ set -e
122
154
trap ' onexit' EXIT
123
155
trap ' onerror' ERR
124
156
125
- describe_string=" $( blue ▌ describe) %s"
126
- context_string=" $( magenta ▌ context) %s"
127
- fail_string=" $( red FAILED) %s"
157
+ describe_string=" $( bold ▌ describe) %s"
158
+ context_string=" $( bold ▌ context) %s"
159
+ it_string=" $( bold ▌ it) %s"
160
+ fail_string=" $( red_bold failed) %s"
128
161
pass_string=" $( green approved) %s"
129
162
exit_success_string=" $( green ▌ exit) $( bold %s finished successfully) "
130
- exit_failed_string=" $( red ▌ exit) $( bold %s finished with errors) "
131
- new_diff_string=" ────┤ $( yellow new) : $( bold %s) ) ├────"
132
- changed_diff_string=" ────┤ $( cyan changed) : $( bold %s) ) ├────"
163
+ exit_failed_string=" $( red_bold ▌ exit) $( bold %s finished with errors) "
164
+ new_diff_string=" ────┤ $( yellow new) : $( bold %s) ├────"
165
+ changed_diff_string=" ────┤ $( blue changed) : $( bold %s) ├────"
133
166
approval_string=" [A]pprove? "
134
167
135
168
if diff --help | grep -- --color > /dev/null 2>&1 ; then
0 commit comments