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