manjaro-tools/lib/util-msg.sh

125 lines
2.6 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
declare ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
2016-02-24 11:27:39 +01:00
if [[ -t 2 ]]; then
2016-09-15 23:58:18 +02:00
# 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)"
YELLOW="${BOLD}$(tput setaf 3)"
BLUE="${BOLD}$(tput setaf 4)"
else
ALL_OFF="\e[0m"
BOLD="\e[1m"
RED="${BOLD}\e[31m"
GREEN="${BOLD}\e[32m"
YELLOW="${BOLD}\e[33m"
BLUE="${BOLD}\e[34m"
fi
2014-10-08 00:11:53 +02:00
fi
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
2014-10-08 00:11:53 +02:00
plain() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
msg() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
msg2() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
2016-02-15 18:53:50 +01:00
info() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${YELLOW} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
2014-10-08 00:11:53 +02:00
warning() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
error() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
2014-10-08 00:11:53 +02:00
}
stat_busy() {
2016-09-15 23:58:18 +02:00
local mesg=$1; shift
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" "$@" >&2
2014-10-08 00:11:53 +02:00
}
stat_done() {
2016-09-15 23:58:18 +02:00
printf "${BOLD}done${ALL_OFF}\n" >&2
2014-10-08 00:11:53 +02:00
}
lock_close() {
local fd=$1
exec {fd}>&-
}
lock() {
if ! [[ "/dev/fd/$1" -ef "$2" ]]; then
mkdir -p -- "$(dirname -- "$2")"
eval "exec $1>"'"$2"'
fi
if ! flock -n $1; then
stat_busy "$3"
flock $1
stat_done
fi
}
slock() {
if ! [[ "/dev/fd/$1" -ef "$2" ]]; then
mkdir -p -- "$(dirname -- "$2")"
eval "exec $1>"'"$2"'
fi
if ! flock -sn $1; then
stat_busy "$3"
flock -s $1
stat_done
fi
}
2016-02-27 02:31:37 +01:00
cleanup() {
2016-09-15 23:58:18 +02:00
exit ${1:-0}
2016-02-27 02:31:37 +01:00
}
2014-10-08 00:11:53 +02:00
abort() {
2016-09-15 23:58:18 +02:00
error 'Aborting...'
cleanup 255
2014-10-08 00:11:53 +02:00
}
die() {
2016-09-15 23:58:18 +02:00
(( $# )) && error "$@"
cleanup 255
2014-10-08 00:11:53 +02:00
}
import(){
2016-09-15 23:58:18 +02:00
if [[ -r $1 ]];then
source $1
else
die "Could not import $1"
fi
}