#!/bin/sh

set -eu

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

Options:
  -f, --force               Force update, even if the testbed has already been
                            updated recently.
$@
EOF
}

short_options='f'
long_options='force'

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

force=
while true; do
  arg="$1"
  shift
  case "$arg" in
    -f|--force)
      force="$arg"
      ;;
    --)
      break
      ;;
  esac
done


if [ -n "$force" ]; then
  rm -f "$debci_testbed_timestamp"
fi

for arch in ${debci_arch_skip_list}; do
  if [ "${debci_arch}" = "${arch}" ]; then
    log "I: testbed setup [${debci_suite}/${debci_arch}/${debci_backend}]: skip (${debci_arch} listed in \$debci_arch_skip_list)"
    exit
  fi
done


if [ -e "$debci_testbed_timestamp" ]; then
  last_update=$(stat --format=%Y "$debci_testbed_timestamp")
  now=$(date +%s)
  if [ $(($now - $last_update)) -le 43200 ]; then # 12h
    log "I: testbed setup [${debci_suite}/${debci_arch}/${debci_backend}]: skip (already updated in the last 12h)"
    exit
  fi
fi

log "I: testbed setup [${debci_suite}/${debci_arch}/${debci_backend}]: starting at $(date)"

maybe_with_proxy invoke_backend create-testbed --suite "$debci_suite" --backend "${debci_backend}"

# record timestamp
touch "$debci_testbed_timestamp"

log "I: testbed setup [${debci_suite}/${debci_arch}/${debci_backend}]: finished at $(date)"
