#!/usr/bin/env bash

# **exercise.sh**

# Keep track of the current devstack directory.
TOP_DIR=$(cd $(dirname "$0") && pwd)

# Load local configuration
source $TOP_DIR/stackrc

# Run everything in the exercises/ directory that isn't explicitly disabled

# comma separated list of script basenames to skip
# to refrain from exercising euca.sh use SKIP_EXERCISES=euca
SKIP_EXERCISES=${SKIP_EXERCISES:-""}

# Locate the scripts we should run
EXERCISE_DIR=$(dirname "$0")/exercises
basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done)

# Track the state of each script
passes=""
failures=""
skips=""

# Loop over each possible script (by basename)
for script in $basenames; do
    if [[ "$SKIP_EXERCISES" =~ $script ]] ; then
        skips="$skips $script"
    else
        echo "====================================================================="
        echo Running $script
        echo "====================================================================="
        $EXERCISE_DIR/$script.sh
        exitcode=$?
        if [[ $exitcode == 55 ]]; then
            skips="$skips $script"
        elif [[ $exitcode -ne 0 ]] ; then
            failures="$failures $script"
        else
            passes="$passes $script"
        fi
    fi
done

# output status of exercise run
echo "====================================================================="
for script in $skips; do
    echo SKIP $script
done
for script in $passes; do
    echo PASS $script
done
for script in $failures; do
    echo FAILED $script
done
echo "====================================================================="

if [ -n "$failures" ] ; then
    exit 1
fi
