#!/bin/bash set -e SELF=$(basename "$0") GEN_DATA_DIR=releng_generated_data CLOG=${GEN_DATA_DIR}/log.${SELF} PASSED_OPTIONS="" if [ "${1}" == "-cleanup" ]; then PASSED_OPTIONS="-cleanup" elif [ "${1}" == "-rc" -a "${2}" == "-keep" ]; then PASSED_OPTIONS="-rc -keep" elif [ "${1}" == "-rc" ]; then PASSED_OPTIONS="-rc" else cat << HLP ${SELF} runs executables from CWD starting with releng_*. stdout/stderr output stored in ${CLOG} ${SELF} -rc [-keep] ${SELF} -cleanup HLP exit 101 fi ######################################################## if [ -f "${CLOG}" ]; then mv "${CLOG}" "${CLOG}".prev fi > ${CLOG} DSTART=`date --utc` printf "\n${SELF}: Started at ${DSTART}" E1=`date '+%s'` # require ^releng_, avoid running (your)self explcitly for s in `ls | grep ^releng_ | grep -v ${SELF} | sort -n`; do if [ -x ${s} -a ! -d ${s} ]; then # tee(1) does trailing \n, which is unwanted in that case printf "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..." echo -e "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..." >> ${CLOG} T1=`date '+%s'` set +e ./${s} ${PASSED_OPTIONS} &>> ${CLOG} RET=$? T2=`date '+%s'` let TS="${T2} - ${T1}" case ${RET} in 0) printf "done in ${TS} sec. ok." ;; *) printf "done in ${TS} sec. FAIL. EXIT CODE: $RET;" ;; esac set -e fi done DEND=`date --utc` printf "\n${SELF}: Stopped at ${DEND}.\n" if [ "${1}" == "-cleanup" ]; then rm -f "${CLOG}" else E2=`date '+%s'` let ES="${E2} - ${E1}" printf "\n${SELF}: Total time elapsed ${ES} sec." printf "\n${SELF}: stdout&stderr saved in ${CLOG}.\n" # TODO: work out a less noisy diff'ing technique! # if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then # printf "\n${SELF}: Log diff follows:\n" # diff -Naur "${CLOG}".prev "${CLOG}" # fi fi exit 0