#!/usr/bin/env bash

set -e

CMD=$*

if [ -z "$CMD" ]
then
    CMD=bash
fi

# Check if 'docker compose' is available (Docker version 20.10+)
if docker compose version &>/dev/null; then
    compose_cmd="docker compose"
else
    compose_cmd="docker-compose"
fi
# retry docker pull if fails
for i in {1..3}; do $compose_cmd pull -q testrunner && break || sleep 3; done

# TODO(DEV): Install riot in the docker image
FULL_CMD="pip install -q --disable-pip-version-check riot==0.20.1 && $CMD"

# install and upgrade riot in case testrunner image has not been updated
# DEV: Use `--no-TTY` and `--quiet-pull` when running in CircleCI
if [[ "${CIRCLECI}" = "true" ]]; then
    $compose_cmd run \
                   -e CIRCLE_NODE_TOTAL \
                   -e CIRCLE_NODE_INDEX \
                   -e CIRCLE_WORKFLOW_ID \
                   -e CIRCLE_BRANCH \
                   -e CIRCLE_SHA1 \
                   -e CIRCLE_REPOSITORY_URL \
                   -e CIRCLE_TAG \
                   -e CIRCLE_WORKFLOW_ID \
                   -e CIRCLE_PROJECT_REPONAME \
                   -e CIRCLE_BUILD_NUM \
                   -e CIRCLE_BUILD_URL \
                   -e CIRCLE_JOB \
                   -e CIRCLE_WORKING_DIRECTORY \
                   -e DD_TRACE_AGENT_URL \
                   -e _CI_DD_API_KEY \
                   -e _CI_DD_APP_KEY \
                   -e RIOT_RUN_RECOMPILE_REQS \
                   --no-TTY \
                   --quiet-pull \
                   --rm \
                   testrunner \
                   bash -c "ulimit -c unlimited || true && $FULL_CMD || (./scripts/bt && false)"
else
    $compose_cmd run \
                   -e DD_TRACE_AGENT_URL \
                   --rm \
                   -i \
                   testrunner \
                   bash -c "git config --global --add safe.directory /root/project && $FULL_CMD"
fi
