seb annotate libseb.sh @ rev 4
Add /lib/libseb.sh (a libtaz.sh version witout i18n)
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Mar 06 16:40:46 2017 +0100 (2017-03-06) |
parents | |
children | 052432697dd3 |
rev | line source |
---|---|
pankso@4 | 1 #!/bin/sh |
pankso@4 | 2 # |
pankso@4 | 3 # libseb.sh: Simple functions without gettext for seb cmdline tools |
pankso@4 | 4 # |
pankso@4 | 5 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License |
pankso@4 | 6 # |
pankso@4 | 7 |
pankso@4 | 8 # Parse cmdline options and store values in a variable. |
pankso@4 | 9 for opt in "$@"; do |
pankso@4 | 10 opt_name="${opt%%=*}" |
pankso@4 | 11 opt_name="$(echo -n "${opt_name#--}" | tr -c 'a-zA-Z0-9' '_')" |
pankso@4 | 12 case "$opt" in |
pankso@4 | 13 --*=*) export $opt_name="${opt#*=}" ;; |
pankso@4 | 14 --*) export $opt_name="yes" ;; |
pankso@4 | 15 esac |
pankso@4 | 16 done |
pankso@4 | 17 |
pankso@4 | 18 # Exit if command ruturn 1 |
pankso@4 | 19 check() { |
pankso@4 | 20 case "$?" in |
pankso@4 | 21 0) info 32 "Done" ;; |
pankso@4 | 22 1) colorize 31 "--> Error" && exit 1 ;; |
pankso@4 | 23 esac |
pankso@4 | 24 } |
pankso@4 | 25 |
pankso@4 | 26 # Check if user is logged as root |
pankso@4 | 27 check_root() { |
pankso@4 | 28 if [ $(id -u) -ne 0 ]; then |
pankso@4 | 29 echo "You must be root to execute: $(basename $0) $@"; exit 1 |
pankso@4 | 30 fi |
pankso@4 | 31 } |
pankso@4 | 32 |
pankso@4 | 33 # Get console cols |
pankso@4 | 34 get_cols() { |
pankso@4 | 35 if ! stty size | cut -d " " -f 2; then |
pankso@4 | 36 echo 80 |
pankso@4 | 37 fi |
pankso@4 | 38 } |
pankso@4 | 39 |
pankso@4 | 40 # Indent text |
pankso@4 | 41 indent() { |
pankso@4 | 42 local in="$1" |
pankso@4 | 43 shift |
pankso@4 | 44 echo -e "\033["${in}"G $@"; |
pankso@4 | 45 } |
pankso@4 | 46 |
pankso@4 | 47 # Display a bold message |
pankso@4 | 48 boldify() { |
pankso@4 | 49 case "$output" in |
pankso@4 | 50 html) echo "<strong>$@</strong>" ;; |
pankso@4 | 51 *) echo -e "\\033[1m$@\\033[0m" ;; |
pankso@4 | 52 esac |
pankso@4 | 53 } |
pankso@4 | 54 |
pankso@4 | 55 # Colorize message |
pankso@4 | 56 colorize() { |
pankso@4 | 57 : ${color=$1} |
pankso@4 | 58 shift |
pankso@4 | 59 case "$color" in |
pankso@4 | 60 0*) echo -e "\\033[${color:-38}m$@\\033[39m" ;; |
pankso@4 | 61 *) echo -e "\\033[1;${color:-38}m$@\\033[0;39m" ;; |
pankso@4 | 62 esac; unset color |
pankso@4 | 63 } |
pankso@4 | 64 |
pankso@4 | 65 # Last command status |
pankso@4 | 66 status() { |
pankso@4 | 67 local code="$?" |
pankso@4 | 68 case "$code" in |
pankso@4 | 69 0) indent $(($(get_cols) - 11)) "[ $(colorize 32 'Done') ]" ;; |
pankso@4 | 70 1) indent $(($(get_cols) - 11)) "[ $(colorize 31 'Fail') ]" ;; |
pankso@4 | 71 esac |
pankso@4 | 72 } |
pankso@4 | 73 |
pankso@4 | 74 # Print info a la status way: info [color] [content] |
pankso@4 | 75 info() { |
pankso@4 | 76 local info="$2" |
pankso@4 | 77 local char="$(echo $info | wc -L)" |
pankso@4 | 78 local in=$((7 + ${char})) |
pankso@4 | 79 indent $(($(get_cols) - ${in})) "[ $(colorize $1 $info) ]" |
pankso@4 | 80 } |
pankso@4 | 81 |
pankso@4 | 82 # Line separator |
pankso@4 | 83 separator() { |
pankso@4 | 84 case "$output" in |
pankso@4 | 85 html) echo -n '<hr />' ;; |
pankso@4 | 86 *) printf "%$(get_cols)s\n" | tr ' ' "${1:-=}" ;; |
pankso@4 | 87 esac |
pankso@4 | 88 } |
pankso@4 | 89 |
pankso@4 | 90 title() { |
pankso@4 | 91 echo ""; colorize 33 "$@"; separator |
pankso@4 | 92 } |
pankso@4 | 93 |
pankso@4 | 94 footer() { |
pankso@4 | 95 separator "-"; [ "$1" ] && colorize 035 "$1"; echo "" |
pankso@4 | 96 } |
pankso@4 | 97 |
pankso@4 | 98 # Testsuite |
pankso@4 | 99 if [ $(basename $0) == "libseb.sh" ]; then |
pankso@4 | 100 title "libseb.sh title()" |
pankso@4 | 101 echo -n "Checking status() 0"; status |
pankso@4 | 102 echo -n "Checking status() 1"; ls /a/a 2>/dev/null; status |
pankso@4 | 103 echo -n "Checking info()"; info 035 "3.4K" |
pankso@4 | 104 echo -n "Checking colorize()"; colorize 33 " message" |
pankso@4 | 105 echo -n "Checking colorize()"; colorize 033 " message" |
pankso@4 | 106 echo "Checking footer()"; footer "Footer message" |
pankso@4 | 107 fi |