#!/bin/bash -efu
#
# Summarize task by number
#
# Copyright (c) 2020 Vitaly Chikunov <vt@altlinux.org>
#
# SPDX-License-Identifier: GPL-2.0-only

PATH=$(dirname $0):$PATH

print_curl_events() {
  local url=$1 logs=$2

  events=$(
    grep -o 'HREF="[^"]\+' $logs \
      | grep -o 'events\..*.log' \
      | sort -V \
      | sed "s!^!$url!" )
  if [ -n "$events" ]; then
    curl -s $events | girar-summary
  fi
}

TLOGS=
atexit() {
  E=$?
  [ -n "$TLOGS" ] && rm -f -- "$TLOGS"
  exit $E
}
trap atexit EXIT

print_curl() {
  local url task=$1

  TLOGS=$(mktemp)
  for url in \
    http://git.altlinux.org/tasks/$task/logs/ \
    http://git.altlinux.org/tasks/archive/done/_$((task/1024))/$task/logs/
  do
    curl -s $url -o $TLOGS
    if grep -q '<TITLE>Index of' $TLOGS; then
      print_curl_events $url $TLOGS
      return
    fi
  done
  return 1
}

print_task() {
  local task=$1 logs

  # Try local
  for logs in \
    /tasks/$task/logs \
    /tasks/archive/done/_$((task/1024))/$task/logs
  do
    if [ -d $logs ]; then
      set +f
      cat $logs/events.*.log | girar-summary
      return
    fi
  done

  # Try remote
  print_curl $task
}

declare -i i
for i
do
  print_task "$i"
done
