You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

81 lines
1.8 KiB

#!/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