#!/bin/sh
#
# This script is supposed to be source'd prior to building the library and samples using GNU GCC.
# Executing "eval ${COVERAGE} (after building/running a case) yields code coverage information.
# Prerequisite: source .env
#
MKDIR=$(which mkdir)
FIND=$(which find)
GCOV=$(which gcov)
SED=$(which sed)
CAT=$(which cat)

if [ "${TRAVIS_BUILD_DIR}" != "" ]; then
  # count number of times the script got source'd
  if [ "${COVID}" != "" ]; then
    export COVID=$((COVID+1))
  else
    export COVID=1
  fi
  if [ "$1" = "1" ]; then
    export ELDFLAGS="--coverage"
    export EFLAGS="--coverage"
    export RUNGCOV="(CWD=\${PWD} && COVLOG=codecov-\${COVID}.txt && ${CAT} /dev/null > \${COVLOG} && \
      for FILE in \$(${FIND} ${TRAVIS_BUILD_DIR} -type f -name '*.gcno'); do \
        FILENAME=\$(basename \${FILE} .gcno).o && \
        FILEPATH=\$(echo \${FILE} | ${SED} -e 's/\(.\+\)build.\+/\1/g') && \
        BUILD=\$(dirname \${FILE} | ${SED} -e 's/^.\+\(build.*\)/\1/g') && \
        cd \${FILEPATH} && \
        ${GCOV} -o \${BUILD} -pb \${FILENAME} >> \${COVLOG}; \
      done && \
      cd \${CWD})"
    export RUNXCOV="(eval \${RUNGCOV} && \
      mkdir -p ${TRAVIS_BUILD_DIR}/codecov/${COVID} && \
      ${FIND} ${TRAVIS_BUILD_DIR} -not \( -path ${TRAVIS_BUILD_DIR}/codecov -prune \) -type f -name '*.gcov' \
        -exec mv {} ${TRAVIS_BUILD_DIR}/codecov/${COVID} \;)"
    export CODECOV="codecov"
  else
    unset ELDFLAGS
    unset EFLAGS
    unset RUNGCOV
    unset CODECOV
  fi
else
  echo "Please run \"source .env\" first!"
fi

