diff --git a/Makefile b/Makefile index aa5f7ec..c5227a9 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ BIN_BASE = \ LIBS_BASE = \ lib/util.sh \ + lib/util-msg.sh \ lib/util-mount.sh \ lib/util-chroot.sh \ lib/util-fstab.sh diff --git a/bin/basestrap.in b/bin/basestrap.in index 5e2c5f2..25744b3 100644 --- a/bin/basestrap.in +++ b/bin/basestrap.in @@ -15,6 +15,7 @@ shopt -s extglob DATADIR='@datadir@' LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-mount.sh import ${LIBDIR}/util-chroot.sh diff --git a/bin/buildiso.in b/bin/buildiso.in index b84908b..37f2e04 100755 --- a/bin/buildiso.in +++ b/bin/buildiso.in @@ -15,6 +15,7 @@ LIBDIR='@libdir@' DATADIR='@datadir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-iso.sh diff --git a/bin/buildpkg.in b/bin/buildpkg.in index d9328ec..2dbc6f6 100644 --- a/bin/buildpkg.in +++ b/bin/buildpkg.in @@ -17,6 +17,7 @@ LIBDIR='@libdir@' DATADIR='@datadir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-chroot.sh import ${LIBDIR}/util-pkg.sh diff --git a/bin/buildtree.in b/bin/buildtree.in index 321dc38..cd05b17 100644 --- a/bin/buildtree.in +++ b/bin/buildtree.in @@ -14,6 +14,7 @@ version=@version@ LIBDIR='@libdir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-pkg-tree.sh diff --git a/bin/check-yaml.in b/bin/check-yaml.in index b3f546d..051d352 100644 --- a/bin/check-yaml.in +++ b/bin/check-yaml.in @@ -15,6 +15,7 @@ LIBDIR='@libdir@' DATADIR='@datadir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-yaml-check.sh import ${LIBDIR}/util-profile.sh diff --git a/bin/checkpkg.in b/bin/checkpkg.in index 394e7d2..9ef661e 100644 --- a/bin/checkpkg.in +++ b/bin/checkpkg.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util-pkg.sh shopt -s extglob diff --git a/bin/chroot-run.in b/bin/chroot-run.in index 8baf71d..b7f1e0e 100644 --- a/bin/chroot-run.in +++ b/bin/chroot-run.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-mount.sh diff --git a/bin/deployiso.in b/bin/deployiso.in index 916c5a6..65d6aba 100644 --- a/bin/deployiso.in +++ b/bin/deployiso.in @@ -14,6 +14,7 @@ version=@version@ LIBDIR='@libdir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-publish.sh diff --git a/bin/find-libdeps.in b/bin/find-libdeps.in index f536d92..cde52bb 100644 --- a/bin/find-libdeps.in +++ b/bin/find-libdeps.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util-pkg.sh set -e diff --git a/bin/finddeps.in b/bin/finddeps.in index 83154af..cba665a 100644 --- a/bin/finddeps.in +++ b/bin/finddeps.in @@ -11,6 +11,9 @@ version=@version@ +LIBDIR='@libdir@' + +import ${LIBDIR}/util-msg.sh match=$1 if [[ -z $match ]]; then diff --git a/bin/fstabgen.in b/bin/fstabgen.in index 1260381..8a4d7c9 100644 --- a/bin/fstabgen.in +++ b/bin/fstabgen.in @@ -15,6 +15,7 @@ shopt -s extglob LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util-fstab.sh write_source() { diff --git a/bin/lddd.in b/bin/lddd.in index 472af14..94c9c3d 100644 --- a/bin/lddd.in +++ b/bin/lddd.in @@ -11,6 +11,10 @@ version=@version@ +LIBDIR='@libdir@' + +import ${LIBDIR}/util-msg.sh + ifs=$IFS IFS="${IFS}:" diff --git a/bin/manjaro-chroot.in b/bin/manjaro-chroot.in index 1b5c96f..f12aab5 100644 --- a/bin/manjaro-chroot.in +++ b/bin/manjaro-chroot.in @@ -16,6 +16,7 @@ shopt -s extglob LIBDIR='@libdir@' SYSCONFDIR='@sysconfdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-mount.sh diff --git a/bin/mkchroot.in b/bin/mkchroot.in index ce98168..4127f43 100644 --- a/bin/mkchroot.in +++ b/bin/mkchroot.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-chroot.sh diff --git a/bin/mkchrootpkg.in b/bin/mkchrootpkg.in index bbf3ce2..cf763ac 100644 --- a/bin/mkchrootpkg.in +++ b/bin/mkchrootpkg.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh import ${LIBDIR}/util-chroot.sh diff --git a/bin/signfile.in b/bin/signfile.in index 033d7e4..9dae5d9 100644 --- a/bin/signfile.in +++ b/bin/signfile.in @@ -13,6 +13,7 @@ version=@version@ LIBDIR='@libdir@' +import ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh load_user_info diff --git a/lib/util-msg.sh b/lib/util-msg.sh new file mode 100644 index 0000000..401161e --- /dev/null +++ b/lib/util-msg.sh @@ -0,0 +1,124 @@ +#!/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. + +export LC_MESSAGES=C +export LANG=C + +declare ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW='' + +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)" + 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 +fi +readonly ALL_OFF BOLD BLUE GREEN RED YELLOW + +plain() { + local mesg=$1; shift + printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +msg() { + local mesg=$1; shift + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +msg2() { + local mesg=$1; shift + printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +info() { + local mesg=$1; shift + printf "${YELLOW} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +warning() { + local mesg=$1; shift + printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +error() { + local mesg=$1; shift + printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +stat_busy() { + local mesg=$1; shift + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" "$@" >&2 +} + +stat_done() { + printf "${BOLD}done${ALL_OFF}\n" >&2 +} + +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 +} + +cleanup() { + exit ${1:-0} +} + +abort() { + error 'Aborting...' + cleanup 255 +} + +die() { + (( $# )) && error "$@" + cleanup 255 +} + +# import(){ +# if [[ -r "$1" ]];then +# source "$1" +# else +# die 'Could not import %s' "$1" +# fi +# }