slitaz-base-files annotate rootfs/lib/libtaz.sh @ rev 158
added generic yes/no function along with indent and statys function to libtaz
author | Christian Mesh <meshca@clarkson.edu> |
---|---|
date | Fri May 11 11:13:15 2012 -0500 (2012-05-11) |
parents | 628884aa895d |
children | 71fb195c4f3e |
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@131 | 38 raw|gtk) |
pankso@131 | 39 done=" $okmsg" |
pankso@131 | 40 error=" $ermsg" ;; |
pankso@131 | 41 html) |
pankso@131 | 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 |
meshca@158 | 82 indent() { |
meshca@158 | 83 local in="$1" |
meshca@158 | 84 shift |
meshca@158 | 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 |
meshca@158 | 96 yes_no() { |
meshca@158 | 97 [ "$autoyes" ] && true |
meshca@158 | 98 echo -n " ($(translate_query y)/$(translate_query N)) ? " |
meshca@158 | 99 read answer |
meshca@158 | 100 [ "$answer" == "$(translate_query y)" ] |
meshca@158 | 101 } |
meshca@158 | 102 |
meshca@158 | 103 translate_query() { |
meshca@158 | 104 case $1 in |
meshca@158 | 105 y) gettext "y" ;; |
meshca@158 | 106 Y) gettext "Y" ;; |
meshca@158 | 107 n) gettext "n" ;; |
meshca@158 | 108 N) gettext "N" ;; |
meshca@158 | 109 # Support other cases but keep them untranslated. |
meshca@158 | 110 *) echo "$1" ;; |
meshca@158 | 111 esac |
meshca@158 | 112 } |
meshca@158 | 113 |
meshca@158 | 114 # Return command status. Default to colored console output. |
meshca@158 | 115 status() { |
meshca@158 | 116 local check=$? |
meshca@158 | 117 case $output in |
meshca@158 | 118 raw|gtk) |
meshca@158 | 119 done=" $okmsg" |
meshca@158 | 120 error=" $ermsg" ;; |
meshca@158 | 121 html) |
meshca@158 | 122 done=" <span class='done'>$okmsg</span>" |
meshca@158 | 123 error=" <span class='error'>$ermsg</span>" ;; |
meshca@158 | 124 *) |
meshca@158 | 125 cols=$(stty -a -F /dev/tty | head -n 1 | cut -d ";" -f 3 | awk '{print $2}') |
meshca@158 | 126 local scol=$(($cols - 10)) |
meshca@158 | 127 done="\\033[${scol}G[ \\033[1;${okcolor}m${okmsg}\\033[0;39m ]" |
meshca@158 | 128 error="\\033[${scol}G[ \\033[1;${ercolor}m${ermsg}\\033[0;39m ]" ;; |
meshca@158 | 129 esac |
meshca@158 | 130 if [ $check = 0 ]; then |
meshca@158 | 131 echo -e "$done" |
meshca@158 | 132 else |
meshca@158 | 133 echo -e "$error" |
meshca@158 | 134 fi |
meshca@158 | 135 } |