#!/bin/sh

set -eu

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

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

prepare_args

if which create-testbed >/dev/null 2>/dev/null; then

  log "Starting testbed setup: $(date)"

  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 already updated in the last 12h, no need to update"
      exit
    fi
  fi

  mkdir -p "$debci_log_dir"
  log="$debci_log_dir/debci-setup.$(date +%d).log"
  touch "$log"
  user_group=$(stat -c %U:%G "${debci_log_dir}")
  chown $user_group "$log"
  ln -sf "$(basename "$log")" "$debci_log_dir/debci-setup.log"
  chown $user_group "$debci_log_dir/debci-setup.log"
  find "$debci_log_dir" -mtime +30 -and -name '*.log' -delete

  (
    msg="debci-setup started on $(LANG=C date)"
    echo "$msg"
    echo "$msg" | sed -s 's/./-/g'
  ) >> $log 2>&1

  if [ -t 1 ] && [ "$debci_quiet" = false ]; then
    run_with_exclusive_lock "$debci_testbed_lock" create-testbed 2>&1 | tee --append "$log"
  else
    run_with_exclusive_lock "$debci_testbed_lock" create-testbed >>$log 2>&1
  fi

  # record timestamp
  touch "$debci_testbed_timestamp"

  log "Finished testbed setup: $(date)"
else
  log "I: $debci_backend backend does not provide a way to create a testbed"
fi
