From 6c3c1b0cf62e59eaad40d425fee97f33ff3b639a Mon Sep 17 00:00:00 2001 From: Marius Mauch Date: Sun, 13 Nov 2005 14:49:21 +0000 Subject: Add slightly modified elog_base patch containing the basic framework for ebuild logging. svn path=/main/trunk/; revision=2306 --- bin/isolated-functions.sh | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 bin/isolated-functions.sh (limited to 'bin/isolated-functions.sh') diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh new file mode 100644 index 000000000..860bc5890 --- /dev/null +++ b/bin/isolated-functions.sh @@ -0,0 +1,204 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header$ + +# Internal logging function, don't use this in ebuilds +elog_base() { + local messagetype + [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1 + case "${1}" in + INFO|WARN|ERROR|LOG) + messagetype="${1}" + shift + ;; + *) + echo -e " ${BAD}*${NORMAL} Invalid use of internal function elog_base(), next message will not be logged" + return 1 + ;; + esac + echo ${*} >> ${T}/logging/${EBUILD_PHASE}.${messagetype} + return 0 +} + +elog() { + elog_base LOG ${*} + echo -e " ${GOOD}*${NORMAL} ${*}" + return 0 +} + +esyslog() { + local pri= + local tag= + + if [ -x /usr/bin/logger ] + then + pri="$1" + tag="$2" + + shift 2 + [ -z "$*" ] && return 0 + + /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*" + fi + + return 0 +} + +einfo() { + einfon ${*} + echo + return 0 +} + +einfon() { + elog_base INFO ${*} + echo -ne " ${GOOD}*${NORMAL} ${*}" + return 0 +} + +ewarn() { + elog_base WARN ${*} + echo -e " ${WARN}*${NORMAL} ${*}" + return 0 +} + +eerror() { + elog_base ERROR ${*} + echo -e " ${BAD}*${NORMAL} ${*}" + return 0 +} + +ebegin() { + if [ -z "${NOCOLOR}" ]; then + echo -ne " ${GOOD}*${NORMAL} ${*}..." + else + echo -e " ${GOOD}*${NORMAL} ${*}..." + fi + return 0 +} + +eend() { + local retval= + if [ "$#" -eq 0 ] || [ "${1:-1}" -eq 0 ]; then + echo -e "${ENDCOL} ${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}" + else + retval="$1" + + if [ "$#" -ge 2 ] + then + shift + eerror "${*}" + fi + echo -e "${ENDCOL} ${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}" + # extra spacing makes it easier to read + echo + return ${retval} + fi + return 0 +} + +KV_major() { + local KV= + + [ -z "$1" ] && return 1 + + KV="$(echo "$1" | \ + awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" + echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $1 }' + + return 0 +} + +KV_minor() { + local KV= + + [ -z "$1" ] && return 1 + + KV="$(echo "$1" | \ + awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" + echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $2 }' + + return 0 +} + +KV_micro() { + local KV= + + [ -z "$1" ] && return 1 + + KV="$(echo "$1" | \ + awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" + echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $3 }' + + return 0 +} + +KV_to_int() { + local KV_MAJOR= + local KV_MINOR= + local KV_MICRO= + local KV_int= + + [ -z "$1" ] && return 1 + + KV_MAJOR="$(KV_major "$1")" + KV_MINOR="$(KV_minor "$1")" + KV_MICRO="$(KV_micro "$1")" + KV_int="$((KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO))" + + # We make version 2.2.0 the minimum version we will handle as + # a sanity check ... if its less, we fail ... + if [ "${KV_int}" -ge 131584 ] + then + echo "${KV_int}" + + return 0 + fi + + return 1 +} + +get_KV() { + local KV="$(uname -r)" + + echo "$(KV_to_int "${KV}")" + + return $? +} + +getcols() { + echo "$2" +} + +unset_colors() { + COLS="25 80" + ENDCOL= + + GOOD= + WARN= + BAD= + NORMAL= + HILITE= + BRACKET= + + if [ -n "${EBUILD}" ] && [ "${*/depend}" = "$*" ]; then + stty cols 80 &>/dev/null + stty rows 25 &>/dev/null + fi +} + +set_colors() { + COLS="`stty size 2> /dev/null`" + COLS="`getcols ${COLS}`" + COLS=$((${COLS} - 7)) + ENDCOL=$'\e[A\e['${COLS}'G' # Now, ${ENDCOL} will move us to the end of the + # column; irregardless of character width + + GOOD=$'\e[32;01m' + WARN=$'\e[33;01m' + BAD=$'\e[31;01m' + NORMAL=$'\e[0m' + HILITE=$'\e[36;01m' + BRACKET=$'\e[34;01m' +} +true -- cgit v1.2.3-1-g7c22