#!/bin/bash

set -e

SELF=$(basename "$0")
CLOG1=log.$SELF.1
CLOG2=log.$SELF.2
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} -rc [-keep]
 ${SELF} -cleanup
HLP
 exit 101
fi

main() {
#
 > ${CLOG1}
 > ${CLOG2}
 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
    printf "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..."
    T1=`date '+%s'`
    set +e
    ./${s} ${PASSED_OPTIONS} 1>>${CLOG1} 2>>${CLOG2}
    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"
 E2=`date '+%s'`
 let ES="${E2}-${E1}"
 printf "\n${SELF}: Total time elapsed ${ES} sec."
 printf "\n${SELF}: Results saved in ${CLOG1} and ${CLOG2}.\n\n"

#
 exit 0
}

#
main