#!/bin/sh

short_options='i'
long_options='index'

usage() {
  cat <<EOF
usage: debci-test [OPTIONS] srcpkg

Options:
  -i, --index               force indexing results just after running the tests

$@
EOF
}

set -eu

debci_base_dir=$(readlink -f $(dirname $(readlink -f $0))/..)
. $debci_base_dir/lib/environment.sh
. $debci_base_dir/lib/functions.sh

process_package() {
  # setup status dir
  status_dir=$(status_dir_for_package "$pkg")
  mkdir -p "$status_dir"

  # output directory for test-package/adt-run
  run_id=$(date +%Y%m%d_%H%M%S)
  adt_out_dir="$(autopkgtest_dir_for_package "$pkg")/$run_id"

  inc=0
  orig_run_id="$run_id"
  while [ -d "$adt_out_dir" ]; do
    # this in *very* unlikely to happen in production, but we need this for the
    # test suite
    run_id="${orig_run_id}.${inc}"
    adt_out_dir="$(autopkgtest_dir_for_package "$pkg")/$run_id"
  done

  mkdir -p "$adt_out_dir"

  # ignore output; we'll get the log from the adt-run output-dir
  test-package "$pkg" "$adt_out_dir" >/dev/null 2>&1 || true
  # Don't do anything after this, test-package might request an asynchronous
  # remote test run. Results get picked up by generate-indexes.
}

# defaults
index=''

while true; do
  case "$1" in
    -i|--index)
      index=true
      shift
      ;;
    --)
      shift
      break
      ;;
    *)
      shift
      ;;
  esac
done

if [ $# -eq 1 ]; then
  pkg="$1"
  process_package
  if [ $index ]; then
    debci-generate-index "$pkg"
  fi
else
  echo "usage: $0 [OPTIONS] PACKAGE"
  exit 1
fi
