clean up function checks

This commit is contained in:
Patrick Stadler 2015-02-21 18:49:18 +01:00
parent 5d3a3fcdb1
commit abd2175a84
2 changed files with 14 additions and 6 deletions

View File

@ -11,7 +11,7 @@ _METRICS=()
# load reporter
source ./reporters/${REPORTER}.sh
copy_function report _r_${REPORTER}_report
unset -f report
unset -f init report terminate
# load metrics
for file in $(find ./metrics -type f -name '*.sh'); do
@ -20,21 +20,25 @@ for file in $(find ./metrics -type f -name '*.sh'); do
metric=${filename%.*}
copy_function collect _m_${metric}_collect
_METRICS+=($metric)
unset -f collect
unset -f init
unset -f init collect terminate
done
# init metrics
for metric in ${_METRICS[@]}; do
[ "`type -t _m_${metric}_init`" != 'function' ] && continue
echo init metric "$metric"
if ! is_function _m_${metric}_init; then
continue
fi
_m_${metric}_init
done
# collect metrics
while true; do
for metric in ${_METRICS[@]}; do
[ "`type -t _m_${metric}_collect`" != 'function' ] && continue
if ! is_function _m_${metric}_collect; then
continue
fi
result=$(_m_${metric}_collect)
_r_${REPORTER}_report $metric $result
done

View File

@ -2,4 +2,8 @@
copy_function () {
declare -F $1 > /dev/null || return 1
eval "$(echo "${2}()"; declare -f ${1} | tail -n +2)"
}
is_function () {
[ "`type -t $1`" == 'function' ]
}