#!/bin/bash

set -eu

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

while [ "$1" != '--' ]; do
  shift
done
shift

if [ -z "${WORKER_START_TIMESTAMP:-}" ]; then
  echo "E: WORKER_START_TIMESTAMP not defined"
  exit 1
fi

whitelist="${debci_config_dir}/whitelist"
seed_list="${debci_config_dir}/seed_list"

if [ -e "${whitelist}" ]; then
  echo "W: whitelist is deprecated, rename it to seed_list instead" >&2
  seed_list="$whitelist"
fi

requested_packages="$@"
if [ -z "$requested_packages" ]; then
  requested_packages=$(cat "$seed_list")
fi

shopt -s nullglob
for pkg in $requested_packages; do
  while true; do
    # wait for the latest job for the given package to be updated after the
    # start time of the current running worker
    last_job="$(ruby -Ilib -rdebci/job -e "puts Debci::Job.joins(:package).where(packages: {name: \"${pkg}\"}).last&.updated_at.to_i")"
    if [ -n "${last_job}" ]; then
      if [ $last_job -ge "${WORKER_START_TIMESTAMP}" ]; then
        break
      fi
    fi
    sleep ${debci_poll_interval:-1}
  done
done

debci update
