#!/bin/sh

set -eu

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

generate_status_entry() {
  local duration="$1"
  pass=$(grep -l '"status":\s*"pass",' ${debci_packages_dir}/*/*/latest.json | wc -l)
  fail=$(grep -l '"status":\s*"fail",' ${debci_packages_dir}/*/*/latest.json | wc -l)
  tmpfail=$(grep -l '"status":\s*"tmpfail",' ${debci_packages_dir}/*/*/latest.json | wc -l)
  total=$(($pass + $fail + $tmpfail))
  date="$(date +%Y-%m-%dT%H:%M:%S)"
  mkdir -p "${debci_status_dir}"
  cat > "${debci_status_dir}/${date}.json" <<EOF
{
  "date": "$date",
  "duration": ${duration},
  "pass": $pass,
  "fail": $fail,
  "tmpfail": $tmpfail,
  "total": $total
}
EOF
  ln -sf "status/${date}.json" "${debci_data_dir}/status.json"
  ln -sf "${date}.json" "${debci_status_dir}/latest.json"
}

generate_history() {
  local prefix=""
  echo "["
  for entry in $(find "${debci_status_dir}" -name '*.json' -and -not -name history.json | sort); do
    if [ -n "$prefix" ]; then
      echo "$prefix"
    fi
    cat $entry
    prefix=","
  done
  echo "]"
}

prepare_args

generate_status_entry "$@"
generate_history > "${debci_status_dir}/history.json"

$base/bin/debci-status --all --status-file > "${debci_data_dir}/packages.json"

