slitaz-dev-tools annotate libtaz/libtaz-modules/report @ rev 107

tazwiki: list uploaded files
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jun 01 21:21:06 2011 +0200 (2011-06-01)
parents 81157fb10757
children b571aa2a37b0
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~<~\&lt;~' -e 's~>~\&gt;~' -e 's/$/<br \/>/' -e 's~STDERR: \(.*\)~<span class="error">\1<\/span>~' -e 's~ ~\&nbsp;\&nbsp;\&nbsp;\&nbsp;~'
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 }