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

libtaz.sh: some minor change and add comments/usage
author Christophe Lincoln <pankso@slitaz.org>
date Sat May 12 01:05:16 2012 +0200 (2012-05-12)
parents f359ebd9f721
children cc07c8fb5f4f
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@139 6 # No bloated code here, function must be used by at least 3-4 tools.
pankso@139 7 #
pankso@139 8 # Documentation: man libtaz or /usr/share/doc/slitaz/libtaz.txt
pankso@125 9 #
pankso@125 10 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License
pankso@125 11 #
pankso@125 12
pankso@125 13 # Internationalization.
pankso@125 14 . /usr/bin/gettext.sh
pankso@125 15 TEXTDOMAIN='slitaz-base'
pankso@125 16 export TEXTDOMAIN
pankso@125 17
pankso@125 18 # Internal variables.
pankso@125 19 okmsg="$(gettext "Done")"
pankso@125 20 ermsg="$(gettext "Failed")"
pankso@125 21 okcolor=32
pankso@125 22 ercolor=31
pankso@125 23
pankso@137 24 # Parse cmdline options and store values in a variable.
pankso@125 25 for opt in "$@"
pankso@125 26 do
pankso@125 27 case "$opt" in
pankso@137 28 --*=*) export ${opt#--} ;;
pankso@137 29 --*) export ${opt#--}="yes" ;;
pankso@125 30 esac
pankso@125 31 done
pankso@131 32 [ "$HTTP_REFERER" ] && output="html"
pankso@125 33
pankso@125 34 # Return command status. Default to colored console output.
pankso@125 35 status() {
pankso@125 36 local check=$?
pankso@131 37 case $output in
pankso@161 38 raw|gtk)
pankso@161 39 done=" $okmsg"
pankso@131 40 error=" $ermsg" ;;
pankso@131 41 html)
pankso@161 42 done=" <span class='done'>$okmsg</span>"
pankso@131 43 error=" <span class='error'>$ermsg</span>" ;;
pankso@136 44 *)
pankso@141 45 cols=$(stty -a -F /dev/tty | head -n 1 | cut -d ";" -f 3 | awk '{print $2}')
pankso@131 46 local scol=$(($cols - 10))
pankso@131 47 done="\\033[${scol}G[ \\033[1;${okcolor}m${okmsg}\\033[0;39m ]"
pankso@131 48 error="\\033[${scol}G[ \\033[1;${ercolor}m${ermsg}\\033[0;39m ]" ;;
pankso@131 49 esac
pankso@125 50 if [ $check = 0 ]; then
pankso@125 51 echo -e "$done"
pankso@125 52 else
pankso@125 53 echo -e "$error"
pankso@125 54 fi
pankso@125 55 }
pankso@125 56
pankso@125 57 # Line separator.
pankso@125 58 separator() {
pankso@132 59 local sepchar="="
pankso@132 60 [ "$HTTP_REFERER" ] && local sepchar="<hr />"
pankso@132 61 case $output in
pankso@132 62 raw|gtk) local sepchar="-" && local cols="8" ;;
pankso@132 63 html) local sepchar="<hr />" ;;
pankso@141 64 *) local cols=$(stty -a -F /dev/tty | head -n 1 | cut -d ";" -f 3 | awk '{print $2}') ;;
pankso@132 65 esac
pankso@125 66 for c in $(seq 1 $cols); do
pankso@131 67 echo -n "$sepchar"
pankso@125 68 done && echo ""
pankso@125 69 }
pankso@125 70
pankso@125 71 # Display a bold message. GTK Yad: Works only in --text=""
pankso@125 72 boldify() {
pankso@125 73 case $output in
meshca@149 74 raw) echo "$@" ;;
meshca@149 75 gtk) echo "<b>$@</b>" ;;
meshca@149 76 html) echo "<strong>$@</strong>" ;;
meshca@149 77 *) echo -e "\\033[1m$@\\033[0m" ;;
pankso@125 78 esac
pankso@125 79 }
pankso@125 80
meshca@158 81 # Indent text $1 spaces
pankso@161 82 indent() {
meshca@158 83 local in="$1"
meshca@158 84 shift
pankso@161 85 echo -e "\033["$in"G $@";
meshca@158 86 }
meshca@158 87
pankso@125 88 # Check if user is logged as root.
pankso@125 89 check_root() {
pankso@125 90 if [ $(id -u) != 0 ]; then
pankso@125 91 gettext "You must be root to execute:" && echo " $(basename $0) $@"
pankso@125 92 exit 1
pankso@125 93 fi
pankso@125 94 }
meshca@158 95
pankso@161 96 # Gettextize yes/no.
meshca@158 97 translate_query() {
meshca@158 98 case $1 in
meshca@158 99 y) gettext "y" ;;
meshca@158 100 Y) gettext "Y" ;;
meshca@158 101 n) gettext "n" ;;
meshca@158 102 N) gettext "N" ;;
meshca@158 103 # Support other cases but keep them untranslated.
meshca@158 104 *) echo "$1" ;;
meshca@158 105 esac
meshca@158 106 }
meshca@160 107
pankso@161 108 # Usage: echo -n "The question" && confirm
pankso@161 109 confirm() {
pankso@161 110 [ "$yes" ] && true
pankso@161 111 echo -n " ($(translate_query y)/$(translate_query N)) ? "
pankso@161 112 read answer
pankso@161 113 [ "$answer" == "$(translate_query y)" ]
meshca@160 114 }
pankso@161 115
pankso@161 116 newline() {
pankso@161 117 echo ""
pankso@161 118 }