You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.8 KiB

# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: package/.../sysfiles/functions.in.txt
# Copyright (C) 2006 The OpenSDE Project
#
# More information can be found in the files COPYING and README.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- SDE-COPYRIGHT-NOTE-END ---
# http://en.wikipedia.org/wiki/ANSI_escape_code
#
ECHO='echo -e'
ESC='\e' # 033
BELL='\a' # 07
ART_SUCCESS=" :-)"
ART_FAILURE=" :-("
ART_NEXT=" v "
COLOR_TITLE="$ESC[36m" # cyan
COLOR_NORMAL="$ESC[0m" # default (no attributes)
COLOR_SUCCESS="$ESC[32m" # green
COLOR_FAILURE="$ESC[31m" # red
MOVE_EOL="$ESC[222G" # 222 columns to the right... kind-of-eol
MOVE_UP="$ESC[1A" # 1 line up (eat last \n)
# ${#foo} works on bash, dash and pdksh, not on ash
MOVE_LEFT_STATUS="$ESC[${#ART_SUCCESS}D" # move left the length of $ART_SUCCESS
MOVE_LEFT_NEXT="$ESC[${#ART_NEXT}D" # move left the length of $ART_NEXT
title() {
local x=1 columns=
columns=$( if ! stty size -F /dev/tty; then
stty size -F /dev/console
fi 2> /dev/null | cut -d' ' -f2 )
[ -n "$columns" ] || columns=80
# fill with dots with an "arrow" pointing down at the end.
for (( x=1; x<columns; x++ )); do
$ECHO -n '.'
done
$ECHO -n "$MOVE_LEFT_NEXT$ART_NEXT\r"
# and the title
$ECHO "$COLOR_TITLE$* $COLOR_NORMAL"
error=0
}
status() {
$ECHO -n "$MOVE_UP$MOVE_EOL$MOVE_LEFT_STATUS"
if [ $error -eq 0 ]; then
$ECHO "$COLOR_SUCCESS$ART_SUCCESS$COLOR_NORMAL"
else
$ECHO "$BELL$COLOR_FAILURE$ART_FAILURE$COLOR_NORMAL"
fi
}
check() {
$* || error=$?
}
action() {
title "$1"
shift
$* || error=$?
status
}