#!/bin/sh

set -eux

delta() {
  local wait="${1}"

  case "${wait}" in
    *"+mn")
      wait="${wait%%+mn}";
      echo "$((60 * wait))"
      ;;
    "A+l'arret")
      echo "0"
      ;;
    "A+l'approche")
      echo "30"
      ;;
  esac
}

add() {
  local date="${1}"
  local wait="${2}"

  local delta="$(delta "${wait}")"

  date="$(date -d "${date}" '+%s')"

  date --iso-8601=seconds -d "@$((date + delta))"
}

sqlite3 \
  'random.db' \
  'select distinct stop, direction from schedules;' \
  | sort \
  | tr '|' ' ' \
  > stops

cat stops | while read l1; do
  set -- $l1
  [ -z "${l1}" ] && continue
  st="${1}"
  direction="${2}"
  output="forecast_${st}_${direction}.tsv"
  printf 'date\tforecast\n' > "${output}"
  sqlite3 \
    'random.db' \
    "select date, wait from schedules where stop='$st' and direction='$direction'" \
    | tr ' ' '+' \
    | tr '|' ' ' \
  | while read l2; do
      [ -z "${l2}" ] && continue
      set -- $l2
      date="${1}"
      wait="${2}"
      printf '%s\t%s\n' \
        "${date}" \
        "$(add "${date}" "${wait}")" \
        >> "${output}"
  done
done
