rev |
line source |
slaxemulator@12
|
1
|
slaxemulator@12
|
2 # Usage : use_report functions/commands
|
slaxemulator@12
|
3 # 'use_report' execute functions/commands and redirect the output.
|
paul@31
|
4 # You can use 'report' function to display messages, steps, blocs and
|
slaxemulator@12
|
5 # status in the terminal and organize the display of the log.
|
slaxemulator@12
|
6
|
slaxemulator@12
|
7 report_verbosity_opt=all
|
slaxemulator@12
|
8
|
slaxemulator@12
|
9 report_display()
|
slaxemulator@12
|
10 {
|
slaxemulator@12
|
11 while read out; do
|
slaxemulator@12
|
12 [ "$out" = €øß ] && report_stop_display && return
|
slaxemulator@12
|
13 echo -e " ...\n ~~~~~~~~~~~~~~~~~~~~ Messages ~~~~~~~~~~~~~~~~~~~~ "
|
slaxemulator@12
|
14 echo "$out"
|
slaxemulator@12
|
15 break
|
slaxemulator@12
|
16 done
|
slaxemulator@12
|
17 while read out; do
|
slaxemulator@12
|
18 [ "$out" = €øß ] && report_stop_display && return
|
slaxemulator@12
|
19 echo "$out"
|
slaxemulator@12
|
20 done
|
slaxemulator@12
|
21 }
|
slaxemulator@12
|
22
|
slaxemulator@12
|
23 report_create_html()
|
slaxemulator@12
|
24 {
|
slaxemulator@12
|
25 if ! [ -f "$log_opt" ]; then
|
slaxemulator@12
|
26 mkdir -p "${log_opt%/*}"
|
slaxemulator@12
|
27 cp /usr/share/slitaz/web/template.html "$log_opt"
|
slaxemulator@12
|
28 sed -e "s/xml:lang=\"us\" lang=\"us\"/xml:lang=\"${LANG%%_*}\" lang=\"${LANG%%_*}\"/" \
|
slaxemulator@12
|
29 -e "s~Title of the page~SliTaz GNU/Linux - Log: $0~" \
|
slaxemulator@12
|
30 -e "s~Second Title~Log: $0~" -i "$log_opt"
|
slaxemulator@12
|
31 echo '<div id="report">' >> "$log_opt"
|
slaxemulator@12
|
32 else
|
slaxemulator@12
|
33 sed 's~</div></body></html>~~' -i "$log_opt"
|
slaxemulator@12
|
34 fi
|
slaxemulator@12
|
35
|
slaxemulator@12
|
36 echo -e "<h1>$(basename "$log_command")</h1>\n<em>$(date)</em>" >> "$log_opt"
|
slaxemulator@12
|
37 [ -L "${log_opt%/*}/web" ] || ln -s /usr/share/slitaz/web "${log_opt%/*}/web"
|
slaxemulator@12
|
38 }
|
slaxemulator@12
|
39
|
slaxemulator@12
|
40 report_start()
|
slaxemulator@12
|
41 {
|
slaxemulator@12
|
42 # Create the temporary directory if needed.
|
slaxemulator@12
|
43 ! [ -d /tmp/libtaz/ ] && mkdir -p /tmp/libtaz
|
slaxemulator@12
|
44 ! [ -d $SLITAZ_LOG ] && mkdir -p $SLITAZ_LOG
|
slaxemulator@12
|
45
|
slaxemulator@12
|
46 # Give permissions to all users if user is root.
|
slaxemulator@12
|
47 if test $(id -u) = 0 ; then
|
slaxemulator@12
|
48 chmod 777 /tmp/libtaz
|
slaxemulator@12
|
49 chmod -R 777 $SLITAZ_LOG
|
slaxemulator@12
|
50 fi
|
slaxemulator@12
|
51
|
slaxemulator@12
|
52 # Get a random logfile name.
|
slaxemulator@12
|
53 if [ "$report_pid" ]; then
|
slaxemulator@12
|
54 log_tmp=/tmp/libtaz/$report_pid
|
slaxemulator@12
|
55 embeded_mode=enabled
|
slaxemulator@12
|
56 initial_bloc_level=$bloc_level
|
slaxemulator@12
|
57 if [ "$open_bloc" ]; then
|
slaxemulator@12
|
58 initial_bloc_level=$(($bloc_level+1))
|
slaxemulator@12
|
59 embeded_open_bloc=yes
|
slaxemulator@12
|
60 fi
|
slaxemulator@12
|
61 if [ -p $log_tmp.stdout ] && ! [ "$open_bloc" = yes ]; then
|
slaxemulator@12
|
62 report_step_status
|
slaxemulator@12
|
63 fi
|
slaxemulator@12
|
64 else
|
slaxemulator@12
|
65 log_tmp=/tmp/libtaz/$$
|
slaxemulator@12
|
66 report_pid=$$
|
slaxemulator@12
|
67 fi
|
slaxemulator@12
|
68
|
paul@31
|
69 # Use the default logfile if no logfile was specified by the main script.
|
slaxemulator@12
|
70 [ ! "$log_opt" ] && [ "$report_log_all" = yes ] && \
|
slaxemulator@12
|
71 log_opt="$SLITAZ_LOG/`basename $0`/$(date -Iseconds).html"
|
slaxemulator@12
|
72 export report_pid log_opt
|
slaxemulator@12
|
73
|
slaxemulator@12
|
74 #if [ "$embeded_mode" != enabled ]; then
|
slaxemulator@12
|
75
|
slaxemulator@12
|
76 # Initialize html logfile if needed, or prepare it to be edited.
|
slaxemulator@12
|
77 [ "$log_opt" ] && { [ ! "$embeded_mode" ] || [ ! -f "$log_opt" ]; } && report_create_html
|
slaxemulator@12
|
78
|
slaxemulator@12
|
79 echo -n "" > $log_tmp
|
slaxemulator@12
|
80
|
slaxemulator@12
|
81 # Initialize named pipes & set I/O redirections.
|
slaxemulator@12
|
82 [ "$embeded_mode" ] || exec 3>&1 4>&2
|
slaxemulator@12
|
83
|
slaxemulator@12
|
84 # Start debugging if the option is enabled.
|
slaxemulator@12
|
85 if [ "$debug_opt" ]; then
|
slaxemulator@12
|
86 exec 2>$log_tmp.stdout
|
slaxemulator@12
|
87 set -vx
|
slaxemulator@12
|
88 echo "[--------------------------/!\ DEBUG MODE ENABLED /!\--------------------------]"
|
slaxemulator@12
|
89 fi
|
slaxemulator@12
|
90
|
paul@31
|
91 # Theses variable are used to configure the display of steps in a terminal.
|
slaxemulator@12
|
92 bloc1_delimiter="================================================================================"
|
slaxemulator@12
|
93 bloc1_display=" "
|
slaxemulator@12
|
94 bloc2_delimiter="----------------------------------------------------------------------------"
|
slaxemulator@12
|
95 bloc2_display=" > "
|
slaxemulator@12
|
96 bloc3_delimiter="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
|
slaxemulator@12
|
97 bloc3_display=" * "
|
slaxemulator@12
|
98
|
slaxemulator@12
|
99 # Use a trap to exit cleanly if app is killed.
|
slaxemulator@12
|
100 trap "report_exit $(basename $0) killed by user" SIGINT SIGTERM
|
slaxemulator@12
|
101
|
paul@31
|
102 # Use another display function if quiet is enabled.
|
slaxemulator@12
|
103 [ "$report_verbosity_opt" = "none" ] && report_display()
|
slaxemulator@12
|
104 {
|
slaxemulator@12
|
105 while read out; do
|
slaxemulator@12
|
106 [ "$out" = €øß ] && report_stop_display && return
|
slaxemulator@12
|
107 done
|
slaxemulator@12
|
108 }
|
slaxemulator@12
|
109 }
|
slaxemulator@12
|
110
|
slaxemulator@12
|
111 report_stop_display()
|
slaxemulator@12
|
112 {
|
slaxemulator@12
|
113 rm $log_tmp.stderr $log_tmp.stdout
|
slaxemulator@12
|
114 sed '/^€øß$/d' -i $log_tmp
|
slaxemulator@12
|
115 touch $log_tmp.end
|
slaxemulator@12
|
116 }
|
slaxemulator@12
|
117
|
slaxemulator@12
|
118 report_listen()
|
slaxemulator@12
|
119 {
|
slaxemulator@12
|
120 mkfifo $log_tmp.stderr $log_tmp.stdout
|
slaxemulator@12
|
121 {
|
slaxemulator@12
|
122 { tee -a $log_tmp $log_tmp.error <$log_tmp.stderr | while read line; do echo -e "\\033[1;31m${line}\\033[0m"; done; }&
|
slaxemulator@12
|
123 { tee -a $log_tmp <$log_tmp.stdout; }&
|
slaxemulator@12
|
124 } | report_display&
|
slaxemulator@12
|
125 usleep 10000
|
slaxemulator@12
|
126 exec 1>>$log_tmp.stdout 2>>$log_tmp.stderr
|
slaxemulator@12
|
127 }
|
slaxemulator@12
|
128
|
slaxemulator@12
|
129 report_stop_listen()
|
slaxemulator@12
|
130 {
|
slaxemulator@12
|
131 if [ -p $log_tmp.stdout ]; then
|
slaxemulator@12
|
132 [ -f $log_tmp.end ] && rm $log_tmp.end
|
slaxemulator@12
|
133 usleep 10000 && echo €øß
|
slaxemulator@12
|
134 while ! [ -f $log_tmp.end ]; do
|
slaxemulator@12
|
135 usleep 10000
|
slaxemulator@12
|
136 done
|
slaxemulator@12
|
137 exec 1>&3 2>&4
|
slaxemulator@12
|
138 rm $log_tmp.end
|
slaxemulator@12
|
139 fi
|
slaxemulator@12
|
140 }
|
slaxemulator@12
|
141
|
slaxemulator@12
|
142 report_stop()
|
slaxemulator@12
|
143 {
|
slaxemulator@12
|
144 ! [ "$report_pid" ] && exit
|
slaxemulator@12
|
145 # End step and close blocs.
|
slaxemulator@12
|
146 [ "$step_running" ] && report end-step
|
slaxemulator@12
|
147 while [ $(($bloc_level)) -gt $(($initial_bloc_level)) ]; do
|
slaxemulator@12
|
148 report close-bloc
|
slaxemulator@12
|
149 done
|
slaxemulator@12
|
150
|
slaxemulator@12
|
151 if [ "$embeded_mode" = enabled ]; then
|
slaxemulator@12
|
152 [ "$bloc_level" ] && echo $(eval echo \$bloc${bloc_level}_status) > $log_tmp.status
|
slaxemulator@12
|
153 if [ "$embeded_open_bloc" = opened ]; then
|
slaxemulator@12
|
154 touch $log_tmp.eob
|
slaxemulator@12
|
155 fi
|
slaxemulator@12
|
156 else
|
slaxemulator@12
|
157 [ "$log_opt" ] && echo '</div></body></html>' >> "$log_opt"
|
slaxemulator@12
|
158 exec 3>&- 4>&-
|
slaxemulator@12
|
159 rm -f $log_tmp*
|
slaxemulator@12
|
160 unset report_pid log_opt
|
slaxemulator@12
|
161
|
slaxemulator@12
|
162 # Stop debugging
|
slaxemulator@12
|
163 [ "$debug_opt" ] && set +vx
|
slaxemulator@12
|
164 [ "$report_log_all" ] && create_log_index
|
slaxemulator@12
|
165 fi
|
slaxemulator@12
|
166 }
|
slaxemulator@12
|
167
|
paul@31
|
168 # Use this to stop a program with an error.
|
slaxemulator@12
|
169 report_exit()
|
slaxemulator@12
|
170 {
|
slaxemulator@12
|
171 # Log&display error message.
|
slaxemulator@12
|
172 echo -e "$@" >&2
|
slaxemulator@12
|
173
|
slaxemulator@12
|
174 # Close step as failed.
|
slaxemulator@12
|
175 if [ "$step_running" ]; then
|
slaxemulator@12
|
176 (exit 1)
|
slaxemulator@12
|
177 report end-step
|
slaxemulator@12
|
178 fi
|
slaxemulator@12
|
179
|
slaxemulator@12
|
180 # Set blocs as failed, report and exit.
|
slaxemulator@12
|
181 bloc1_status="failed"
|
slaxemulator@12
|
182 bloc2_status="failed"
|
slaxemulator@12
|
183 bloc3_status="failed"
|
slaxemulator@12
|
184 report_stop
|
slaxemulator@12
|
185 exit 1
|
slaxemulator@12
|
186 }
|
slaxemulator@12
|
187
|
slaxemulator@12
|
188 # Usage : report [command] [message]
|
slaxemulator@12
|
189 #
|
paul@31
|
190 # type :message simply display the message.
|
paul@31
|
191 # step name the step and display status when ended.
|
paul@31
|
192 # end-step display status of the step, it's done automatically when
|
paul@31
|
193 # starting a new step, closing a bloc or stopping a report.
|
paul@31
|
194 # open-bloc open the list of steps in the operation.
|
paul@31
|
195 # close-bloc close the current bloc.
|
slaxemulator@12
|
196 report()
|
slaxemulator@12
|
197 {
|
slaxemulator@12
|
198 # First : get status before it is changed by other commands.
|
slaxemulator@12
|
199 check_status=$?
|
slaxemulator@12
|
200 case "$1" in
|
slaxemulator@12
|
201 start)
|
slaxemulator@12
|
202 report_start
|
slaxemulator@12
|
203 ;;
|
slaxemulator@12
|
204 stop)
|
slaxemulator@12
|
205 report_stop
|
slaxemulator@12
|
206 ;;
|
slaxemulator@12
|
207 exit)
|
slaxemulator@12
|
208 shift && report_exit "$@"
|
slaxemulator@12
|
209 ;;
|
slaxemulator@12
|
210 # TODO : Code displaying a message during a step run.
|
slaxemulator@12
|
211 message)
|
slaxemulator@12
|
212 shift
|
slaxemulator@12
|
213 echo -e "${current_bloc_display}$@"
|
slaxemulator@12
|
214 report_message=$(echo "$@" | sed "s~$~<br />~g")
|
slaxemulator@12
|
215 [ "$log_opt" ] && echo -e "<div class=\"message\">$report_message</div>" >> "$log_opt"
|
slaxemulator@12
|
216 ;;
|
slaxemulator@12
|
217 step)
|
slaxemulator@12
|
218 [ "$log_step" ] && echo "$2" > $log_step
|
slaxemulator@12
|
219 [ "$open_bloc" ] && report_open_bloc
|
slaxemulator@12
|
220 [ "$step_running" ] && report_step_status
|
slaxemulator@12
|
221 echo -ne "$current_bloc_display$2\\033[70G[ \\033[1;32mR\\033[33mU\\033[31mN\\033[0;39m ]" >&3
|
slaxemulator@12
|
222 [ "$log_opt" ] && echo -e "<div class=\"$2\">\n<h$(($bloc_level+2))>$2</h$(($bloc_level+2))>" >> "$log_opt"
|
slaxemulator@12
|
223 export step_running="$2"
|
slaxemulator@12
|
224 report_listen
|
slaxemulator@12
|
225 ;;
|
slaxemulator@12
|
226 end-step)
|
slaxemulator@12
|
227 if ! [ "$step_running" ]; then
|
slaxemulator@12
|
228 report_return_code=$check_status
|
slaxemulator@12
|
229 else
|
slaxemulator@12
|
230 report_step_status
|
slaxemulator@12
|
231 fi
|
slaxemulator@12
|
232 ;;
|
slaxemulator@12
|
233 open-bloc)
|
slaxemulator@12
|
234 export open_bloc=yes
|
slaxemulator@12
|
235 ;;
|
slaxemulator@12
|
236 close-bloc)
|
slaxemulator@12
|
237 if [ -f "$log_tmp.eob" ]; then
|
slaxemulator@12
|
238 report_open_bloc
|
slaxemulator@12
|
239 check_status=$(cat $log_tmp.status)
|
slaxemulator@12
|
240 rm $log_tmp.status
|
slaxemulator@12
|
241 report_set_bloc_status
|
slaxemulator@12
|
242 elif [ "$step_running" ]; then
|
slaxemulator@12
|
243 report_step_status
|
slaxemulator@12
|
244 fi
|
slaxemulator@12
|
245
|
slaxemulator@12
|
246 # Then close the bloc and report status if it was open.
|
slaxemulator@12
|
247 if ! [ "$open_bloc" ]; then
|
slaxemulator@12
|
248 export current_bloc_display="$(eval echo \"\$bloc$((${bloc_level}-1))_display\")"
|
slaxemulator@12
|
249 [ "$(eval echo \"\$bloc${bloc_level}_delimiter\")" ] && \
|
slaxemulator@12
|
250 echo -e "$current_bloc_display$(eval echo \"\$bloc${bloc_level}_delimiter\")" >&3
|
slaxemulator@12
|
251 echo -en "$current_bloc_display... $(eval echo \"\$bloc${bloc_level}_running\")" >&3
|
slaxemulator@12
|
252 check_status=$(eval echo \$bloc${bloc_level}_status)
|
slaxemulator@12
|
253 report_display_status
|
slaxemulator@12
|
254
|
slaxemulator@12
|
255 # Set the bloc status in the log file.
|
slaxemulator@12
|
256 if [ "$log_opt" ]; then
|
slaxemulator@12
|
257 sed "s~<div class=\"bloc_level$bloc_level\">~<div class=\"$check_status\">~" -i "$log_opt"
|
slaxemulator@12
|
258 echo "</div>" >> "$log_opt"
|
slaxemulator@12
|
259 fi
|
slaxemulator@12
|
260 echo "" >&3
|
slaxemulator@12
|
261 export bloc_level=$(($bloc_level-1))
|
slaxemulator@12
|
262 [ "$bloc_level" = 0 ] && unset bloc_level
|
slaxemulator@12
|
263 else
|
slaxemulator@12
|
264 unset open_bloc
|
slaxemulator@12
|
265 fi
|
slaxemulator@12
|
266 ;;
|
slaxemulator@12
|
267 sublog)
|
slaxemulator@12
|
268 shift
|
slaxemulator@12
|
269 ! [ "$log_list" ] && log_list="$log_opt"
|
slaxemulator@12
|
270 export log_list="$1 $log_list"
|
slaxemulator@12
|
271 export log_opt="$1"
|
slaxemulator@12
|
272 report_create_html
|
slaxemulator@12
|
273 ;;
|
slaxemulator@12
|
274 end-sublog)
|
slaxemulator@12
|
275 [ "$log_opt" ] || continue
|
slaxemulator@12
|
276 export log_list="${log_list#* }"
|
slaxemulator@12
|
277 echo '</div></body></html>' >> "$log_opt"
|
slaxemulator@12
|
278 # Grep the summary of sublog (main action + status) and put
|
slaxemulator@12
|
279 # it in the main log, plus a link.
|
slaxemulator@12
|
280 [ "$log_list" ] && { sed -n '/<div id="report">/,$p' $log_opt | \
|
slaxemulator@12
|
281 grep -A1 -F '<div class=' | sed 1,2!d &&
|
slaxemulator@12
|
282 echo '<a class="sublog" href="'$log_opt'">SubLog</a>' && \
|
slaxemulator@12
|
283 echo "</div>"
|
slaxemulator@12
|
284 } >> ${log_list%% *}
|
slaxemulator@12
|
285 export log_opt="${log_list%% *}"
|
slaxemulator@12
|
286 report_step_status
|
slaxemulator@12
|
287 ;;
|
slaxemulator@12
|
288 esac
|
slaxemulator@12
|
289 return $report_return_code
|
slaxemulator@12
|
290 }
|
slaxemulator@12
|
291
|
paul@31
|
292 # Open a bloc of substeps in a terminal and log.
|
slaxemulator@12
|
293 report_open_bloc()
|
slaxemulator@12
|
294 {
|
slaxemulator@12
|
295 unset open_bloc
|
slaxemulator@12
|
296 [ "$embeded_open_bloc" = "yes" ] && embeded_open_bloc=opened
|
slaxemulator@12
|
297 [ -f "$log_tmp.eob" ] && rm $log_tmp.eob
|
slaxemulator@12
|
298 export bloc_level=$(($bloc_level+1))
|
slaxemulator@12
|
299 export bloc${bloc_level}_running="$step_running"
|
slaxemulator@12
|
300 if [ -p $log_tmp.stdout ]; then
|
slaxemulator@12
|
301 if [ -s $log_tmp ]; then
|
slaxemulator@12
|
302 prebloc=yes
|
slaxemulator@12
|
303 report_step_status
|
slaxemulator@12
|
304 prebloc=
|
slaxemulator@12
|
305 else
|
slaxemulator@12
|
306 report_stop_listen
|
slaxemulator@12
|
307 echo ' ...' >&3
|
slaxemulator@12
|
308 fi
|
slaxemulator@12
|
309 [ "$(eval echo \$bloc${bloc_level}_delimiter)" ] && \
|
slaxemulator@12
|
310 echo "$current_bloc_display$(eval echo \"\$bloc${bloc_level}_delimiter\")" >&3
|
slaxemulator@12
|
311 [ "$log_opt" ] && sed "s~<div class=\"$step_running\">~<div class=\"bloc_level$bloc_level\">~" -i "$log_opt"
|
slaxemulator@12
|
312 else
|
slaxemulator@12
|
313 exec 1>&3 2>&4
|
slaxemulator@12
|
314 fi
|
slaxemulator@12
|
315 export current_bloc_display="$(eval echo \"\$bloc${bloc_level}_display\")"
|
slaxemulator@12
|
316 unset bloc${bloc_level}_status
|
slaxemulator@12
|
317 unset step_running
|
slaxemulator@12
|
318 }
|
slaxemulator@12
|
319
|
paul@31
|
320 # These are the two new status functions used by the report tool.
|
slaxemulator@12
|
321 # States are : ok - no error since the start of the step
|
paul@31
|
322 # warning - there was an error(s) since the start of the step
|
paul@31
|
323 # failed - the last executed command has exited abnormally
|
slaxemulator@12
|
324 report_step_status()
|
slaxemulator@12
|
325 {
|
slaxemulator@12
|
326 unset report_return_code
|
slaxemulator@12
|
327 if [ -p $log_tmp.stdout ]; then
|
slaxemulator@12
|
328 report_stop_listen
|
slaxemulator@12
|
329
|
paul@31
|
330 # Close message bloc if opened.
|
slaxemulator@12
|
331 if [ -s $log_tmp -a "$report_verbosity_opt" = all ] || \
|
slaxemulator@12
|
332 [ -s $log_tmp.error -a "$report_verbosity_opt" != none ]; then
|
slaxemulator@12
|
333 echo " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ " >&3
|
slaxemulator@12
|
334 ! [ "$prebloc" ] && echo -en "$current_bloc_display... $step_running" >&3 && report_addemptyline="yes"
|
slaxemulator@12
|
335 fi
|
slaxemulator@12
|
336
|
slaxemulator@12
|
337 # Check, display and log the status of the step.
|
slaxemulator@12
|
338 if ! [ "$check_status" = "0" ]; then
|
slaxemulator@12
|
339 check_status=failed
|
slaxemulator@12
|
340 else
|
slaxemulator@12
|
341 [ -s "$log_tmp.error" ] && check_status=warning || check_status=ok
|
slaxemulator@12
|
342 fi
|
slaxemulator@12
|
343 ! [ "$prebloc" ] && report_display_status
|
slaxemulator@12
|
344 [ "$report_addemptyline" ] && echo "" >&3 && unset report_addemptyline
|
slaxemulator@12
|
345 [ "$log_opt" ] && report_rec_log
|
slaxemulator@12
|
346 fi
|
slaxemulator@12
|
347
|
slaxemulator@12
|
348 [ -f "$log_tmp.eob" ] && rm $log_tmp.eob
|
slaxemulator@12
|
349
|
slaxemulator@12
|
350 # Set blocs status if needed.
|
slaxemulator@12
|
351 [ -f $log_tmp.status ] && check_status=$(cat $log_tmp.status) && rm $log_tmp.status
|
slaxemulator@12
|
352 [ "$bloc_level" ] && report_set_bloc_status
|
slaxemulator@12
|
353
|
slaxemulator@12
|
354 # Clear variables / temporary logs.
|
slaxemulator@12
|
355 ! [ "$prebloc" ] && export step_running=""
|
slaxemulator@12
|
356 check_status=""
|
slaxemulator@12
|
357 echo -n "" > $log_tmp.error
|
slaxemulator@12
|
358 echo -n "" > $log_tmp
|
slaxemulator@12
|
359 }
|
slaxemulator@12
|
360
|
slaxemulator@12
|
361 report_display_status()
|
slaxemulator@12
|
362 {
|
slaxemulator@12
|
363 [ "$report_return_code" = 1 ] && check_status=failed
|
slaxemulator@12
|
364 echo -en "\\033[70G " >&3
|
slaxemulator@12
|
365 echo -en "\\033[70G[ " >&3
|
slaxemulator@12
|
366 [ "$check_status" = ok ] && report_return_code=0 && echo -en "\\033[1;32mOK" >&3
|
slaxemulator@12
|
367 [ "$check_status" = warning ] && report_return_code=0 && echo -en "\\033[1;33mWarning" >&3
|
slaxemulator@12
|
368 [ "$check_status" = failed ] && report_return_code=1 && echo -en "\\033[1;31mFailed" >&3
|
slaxemulator@12
|
369 echo -e "\\033[0;39m ]" >&3
|
slaxemulator@12
|
370 }
|
slaxemulator@12
|
371
|
slaxemulator@12
|
372 report_term_to_html()
|
slaxemulator@12
|
373 {
|
slaxemulator@12
|
374 report_decolorize | sed -e 's~<~\<~' -e 's~>~\>~' -e 's/$/<br \/>/' -e 's~STDERR: \(.*\)~<span class="error">\1<\/span>~' -e 's~ ~\ \ \ \ ~'
|
slaxemulator@12
|
375 }
|
slaxemulator@12
|
376
|
slaxemulator@12
|
377 report_decolorize()
|
slaxemulator@12
|
378 {
|
slaxemulator@12
|
379 tr -d '\e' | sed -r "s/\[([0-9]{1,3}(;[0-9]{1,3})*)[m|G]//g"
|
slaxemulator@12
|
380 }
|
slaxemulator@12
|
381
|
slaxemulator@12
|
382 report_rec_log()
|
slaxemulator@12
|
383 {
|
slaxemulator@12
|
384 ! [ "$prebloc" ] && sed "s~<div class=\"$step_running\">~<div class=\"$check_status\">~" -i "$log_opt"
|
slaxemulator@12
|
385 if [ -s "$log_tmp" ]; then
|
slaxemulator@12
|
386 if [ -s "$log_tmp.error" ]; then
|
slaxemulator@12
|
387 cat $log_tmp.error | sort -u | while read line; do
|
slaxemulator@12
|
388 # Format line to avoid sed errors :
|
slaxemulator@12
|
389 line=$(echo "$line" | sed -e 's~\*~\\\*~g' -e 's~\[~\\\[~g' -e 's~\]~\\\]~g')
|
slaxemulator@12
|
390 sed "s~^$line$~STDERR: $line~" -i $log_tmp
|
slaxemulator@12
|
391 done
|
slaxemulator@12
|
392 fi
|
slaxemulator@12
|
393 echo -n "<pre>" >> "$log_opt"
|
slaxemulator@12
|
394 cat $log_tmp | report_term_to_html >> "$log_opt"
|
slaxemulator@12
|
395 echo "</pre>" >> "$log_opt"
|
slaxemulator@12
|
396 fi
|
slaxemulator@12
|
397 ! [ "$prebloc" ] && echo "</div>" >> "$log_opt"
|
slaxemulator@12
|
398 }
|
slaxemulator@12
|
399
|
paul@31
|
400 # These variables keep the status of the blocs.
|
paul@31
|
401 # A bloc is reported as ok if all child steps are ok and has failed
|
slaxemulator@12
|
402 # if all child steps are failed (or if a fatal error occurs).
|
paul@31
|
403 # In other cases the bloc is reported as a warning.
|
slaxemulator@12
|
404 report_set_bloc_status()
|
slaxemulator@12
|
405 {
|
slaxemulator@12
|
406 bloc_status=$(eval echo \$bloc${bloc_level}_status)
|
slaxemulator@12
|
407 for n in $(seq $bloc_level -1 1); do
|
slaxemulator@12
|
408 ! [ "$(eval echo \$bloc${n}_status)" ] && eval bloc${n}_status=$check_status
|
slaxemulator@12
|
409 ! [ "$(eval echo \$bloc${n}_status)" = "$check_status" ] && \
|
slaxemulator@12
|
410 eval bloc${n}_status=warning
|
slaxemulator@12
|
411 done
|
slaxemulator@12
|
412 }
|
slaxemulator@12
|
413
|
slaxemulator@12
|
414 create_log_index()
|
slaxemulator@12
|
415 {
|
slaxemulator@12
|
416 cd $SLITAZ_LOG
|
slaxemulator@12
|
417 cp -f /usr/share/slitaz/web/template.html index.html
|
slaxemulator@12
|
418 sed -e "s/xml:lang=\"us\" lang=\"us\"/xml:lang=\"${LANG%%_*}\" lang=\"${LANG%%_*}\"/" \
|
slaxemulator@12
|
419 -e "s~Title of the page~SliTaz GNU/Linux - Logs Index~" \
|
slaxemulator@12
|
420 -e "s~Second Title~Logs Index~" -i index.html
|
slaxemulator@12
|
421 echo '<div id="report">' >> index.html
|
slaxemulator@12
|
422 for log in $(ls -t */*); do
|
slaxemulator@12
|
423 log_title=$(grep '<h1>.*</h1>' $log | sed 's~<h1>\(.*\)</h1>~\1~')
|
slaxemulator@12
|
424 log_date=$(date -r $log)
|
slaxemulator@12
|
425 log_status=$(grep '<div class=".*">' $log | sed -e 1!d -e 's~<.*"\(.*\)">~\1~')
|
slaxemulator@12
|
426 echo -e " <a href=\"$log\"><div class=\"$log_status\">$log_date: $log_title</div></a>" >> index.html
|
slaxemulator@12
|
427 done
|
slaxemulator@12
|
428 echo -e '</div></body></html>' >> index.html
|
slaxemulator@12
|
429 chmod 666 index.html
|
slaxemulator@12
|
430 }
|