manjaro-tools/lib/util-msg.sh

130 lines
2.7 KiB
Bash
Raw Normal View History

2014-10-08 00:11:53 +02:00
#!/bin/bash
# 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.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
2014-12-04 19:20:28 +01:00
export LC_MESSAGES=C
2014-10-08 00:11:53 +02:00
export LANG=C
# check if messages are to be printed using color
2015-03-01 18:03:43 +01:00
unset ALL_OFF BOLD BLUE GREEN RED YELLOW CYAN MAGENTA WHITE
2014-10-08 00:11:53 +02:00
if [[ -t 2 ]]; then
# prefer terminal safe colored and bold text when tput is supported
if tput setaf 0 &>/dev/null; then
ALL_OFF="$(tput sgr0)"
BOLD="$(tput bold)"
RED="${BOLD}$(tput setaf 1)"
GREEN="${BOLD}$(tput setaf 2)"
2014-10-08 00:11:53 +02:00
YELLOW="${BOLD}$(tput setaf 3)"
BLUE="${BOLD}$(tput setaf 4)"
2015-03-01 18:03:43 +01:00
MAGENTA="${BOLD}$(tput setaf 5)"
CYAN="${BOLD}$(tput setaf 6)"
WHITE="${BOLD}$(tput setaf 7)"
2014-10-08 00:11:53 +02:00
else
2015-03-01 21:24:23 +01:00
ALL_OFF="\033[01;00m"
RED="\033[01;31m"
GREEN="\033[01;32m"
YELLOW="\033[01;33m"
BLUE="\033[01;34m"
MAGENTA="\033[01;35m"
CYAN="\033[01;36m"
WHITE="\033[01;37m"
2014-10-08 00:11:53 +02:00
fi
fi
2015-03-01 18:03:43 +01:00
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW CYAN MAGENTA WHITE
2014-10-08 00:11:53 +02:00
plain() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
msg() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${GREEN}==>${ALL_OFF}${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
msg2() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${BLUE} ->${ALL_OFF}${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
msg3() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${YELLOW} -->${ALL_OFF}${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
}
2014-10-08 00:11:53 +02:00
warning() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${YELLOW}==> WARNING:${ALL_OFF}${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
error() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${RED}==> ERROR:${ALL_OFF}${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
stat_busy() {
local mesg=$1; shift
2015-03-01 20:22:01 +01:00
printf "${GREEN}==>${ALL_OFF}${WHITE} ${mesg}...${ALL_OFF}" >&2
2014-10-08 00:11:53 +02:00
}
stat_done() {
2015-03-01 20:22:01 +01:00
printf "${WHITE}done${ALL_OFF}\n" >&2
2014-10-08 00:11:53 +02:00
}
setup_workdir() {
[[ -z $WORKDIR ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
}
cleanup() {
[[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
2014-11-11 23:02:40 +01:00
exit ${1:-0}
2014-10-08 00:11:53 +02:00
}
abort() {
2014-11-11 23:02:40 +01:00
error 'Aborting...'
cleanup 255
2014-10-08 00:11:53 +02:00
}
die() {
2014-11-11 23:02:40 +01:00
(( $# )) && error "$@"
cleanup 255
2014-10-08 00:11:53 +02:00
}
2014-11-12 02:19:58 +01:00
lock() {
eval "exec $1>"'"$2"'
if ! flock -n $1; then
stat_busy "$3"
flock $1
stat_done
fi
}
slock() {
eval "exec $1>"'"$2"'
if ! flock -sn $1; then
stat_busy "$3"
flock -s $1
stat_done
fi
}
2015-01-13 04:42:44 +01:00
# trap_abort() {
# trap - EXIT INT QUIT TERM HUP
# abort
# }
#
2015-01-13 04:42:44 +01:00
# trap_exit() {
# local r=$?
# trap - EXIT INT QUIT TERM HUP
# cleanup $r
2014-12-04 22:54:23 +01:00
# }
#
2015-01-13 04:42:44 +01:00
# trap 'trap_abort' INT QUIT TERM HUP
# trap 'trap_exit' EXIT