slitaz-base-files annotate rootfs/lib/libtaz.sh @ rev 136

libtaz.sh: use /dev/stdin and improve testsuite.sh
author Christophe Lincoln <pankso@slitaz.org>
date Tue Apr 17 01:03:14 2012 +0200 (2012-04-17)
parents fdcc019189d9
children 7dd241a1171b
rev   line source
pankso@125 1 #!/bin/sh
pankso@125 2 #
pankso@125 3 # SliTaz Base functions used from boot scripts to end user tools. Use
pankso@125 4 # gettext and not echo for messages. Keep output suitable for GTK boxes
pankso@125 5 # and Ncurses dialog. LibTaz should not depend on any configuration file.
pankso@125 6 # No bloated code here, function must be used by at least 3-4 tools. See
pankso@125 7 # libtaz() for a list of functions and options or run: tazdev libtaz.sh
pankso@125 8 # Libtaz is located in /lib/libtaz.sh since it is used when /usr may not
pankso@125 9 # be mounted.
pankso@125 10 #
pankso@125 11 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License
pankso@125 12 #
pankso@125 13
pankso@125 14 # Internationalization.
pankso@125 15 . /usr/bin/gettext.sh
pankso@125 16 TEXTDOMAIN='slitaz-base'
pankso@125 17 export TEXTDOMAIN
pankso@125 18
pankso@125 19 # Internal variables.
pankso@125 20 okmsg="$(gettext "Done")"
pankso@125 21 ermsg="$(gettext "Failed")"
pankso@125 22 okcolor=32
pankso@125 23 ercolor=31
pankso@125 24
pankso@125 25 # Parse cmdline options.
pankso@125 26 for opt in "$@"
pankso@125 27 do
pankso@125 28 case "$opt" in
pankso@125 29 --raw-out)
pankso@131 30 output="raw" ;;
pankso@125 31 --gtk-out)
pankso@131 32 output="gtk" ;;
pankso@125 33 --html-out)
pankso@131 34 output="html" ;;
pankso@125 35 esac
pankso@125 36 done
pankso@131 37 [ "$HTTP_REFERER" ] && output="html"
pankso@125 38
pankso@125 39 # Help and usage.
pankso@125 40 libtaz() {
pankso@125 41 cat << EOT
pankso@125 42
pankso@125 43 Include this library in a script:
pankso@126 44 . /lib/libtaz.sh
pankso@125 45
pankso@125 46 Functions:
pankso@125 47 status
pankso@125 48 separator
pankso@125 49 boldify string
pankso@125 50 check_root
pankso@125 51
pankso@125 52 Options:
pankso@125 53 --raw-out
pankso@125 54 --gtk-out
pankso@125 55 --html-out
pankso@125 56
pankso@125 57 EOT
pankso@125 58 }
pankso@125 59
pankso@125 60 # Return command status. Default to colored console output.
pankso@125 61 status() {
pankso@125 62 local check=$?
pankso@131 63 case $output in
pankso@131 64 raw|gtk)
pankso@131 65 done=" $okmsg"
pankso@131 66 error=" $ermsg" ;;
pankso@131 67 html)
pankso@131 68 done=" <span class='done'>$okmsg</span>"
pankso@131 69 error=" <span class='error'>$ermsg</span>" ;;
pankso@136 70 *)
pankso@136 71 cols=$(stty -a -F /dev/stdin | head -n 1 | cut -d ";" -f 3 | awk '{print $2}')
pankso@131 72 local scol=$(($cols - 10))
pankso@131 73 done="\\033[${scol}G[ \\033[1;${okcolor}m${okmsg}\\033[0;39m ]"
pankso@131 74 error="\\033[${scol}G[ \\033[1;${ercolor}m${ermsg}\\033[0;39m ]" ;;
pankso@131 75 esac
pankso@125 76 if [ $check = 0 ]; then
pankso@125 77 echo -e "$done"
pankso@125 78 else
pankso@125 79 echo -e "$error"
pankso@125 80 fi
pankso@125 81 }
pankso@125 82
pankso@125 83 # Line separator.
pankso@125 84 separator() {
pankso@132 85 local sepchar="="
pankso@132 86 [ "$HTTP_REFERER" ] && local sepchar="<hr />"
pankso@132 87 case $output in
pankso@132 88 raw|gtk) local sepchar="-" && local cols="8" ;;
pankso@132 89 html) local sepchar="<hr />" ;;
pankso@136 90 *) local cols=$(stty -a -F /dev/stdin | head -n 1 | cut -d ";" -f 3 | awk '{print $2}') ;;
pankso@132 91 esac
pankso@125 92 for c in $(seq 1 $cols); do
pankso@131 93 echo -n "$sepchar"
pankso@125 94 done && echo ""
pankso@125 95 }
pankso@125 96
pankso@125 97 # Display a bold message. GTK Yad: Works only in --text=""
pankso@125 98 boldify() {
pankso@125 99 case $output in
pankso@125 100 raw) echo "$1" ;;
pankso@125 101 gtk) echo "<b>$1</b>" ;;
pankso@125 102 html) echo "<strong>$1</strong>" ;;
pankso@125 103 *) echo -e "\\033[1m${1}\\033[0m" ;;
pankso@125 104 esac
pankso@125 105 }
pankso@125 106
pankso@125 107 # Check if user is logged as root.
pankso@125 108 check_root() {
pankso@125 109 if [ $(id -u) != 0 ]; then
pankso@125 110 gettext "You must be root to execute:" && echo " $(basename $0) $@"
pankso@125 111 exit 1
pankso@125 112 fi
pankso@125 113 }