#!/bin/bash

codedir=/usr/lib/obs/server
datadir=/srv/obs

outdir="$datadir/stats"
tmpoutdir="$outdir/.generate.$$"

cd "$datadir/log" || exit 1

sel="$1"
shift
if test -z "$sel" ; then
  sel=$(date -u '+%Y%m%d')
fi
test -n "$sel" || exit 1

rm -rf "$tmpoutdir"

for l in src_server.log-*.* scheduler_*.* rep_server.log-*.* signer.log-*.* publisher.log-*.* dispatcher.log-*.* servicedispatch.log-*.* getbinariesproxy.log-*.* ; do
  arch=
  t=
  case $l in
    *$sel*) ;;
    *) continue
  esac
  decompressor=
  case $l in
    *.xz) decompressor="xzdec" ;;
    *.zst) decompressor="zstd -dc" ;;
    *) continue
  esac
  case $l in
    *.crit.log-*)
      continue
      ;;
    scheduler_*)
      arch=${l#scheduler_}
      arch=${arch%%.*}
      t=scheduler
      ;;
    src_server*)
      t=srcserver
      ;;
    rep_server*)
      t=repserver
      ;;
    signer*)
      t=signer
      ;;
    publisher*)
      t=publisher
      ;;
    dispatcher*)
      t=dispatcher
      ;;
    servicedispatch*)
      t=servicedispatch
      ;;
    getbinariesproxy*)
      t=getbinariesproxy
      ;;
  esac
  echo "$l -> $t $arch"
  $decompressor < $l | "$codedir/bs_statistics" generate -t $t -o "$tmpoutdir/%F.stat" "$@" $arch
done
"$codedir/bs_statistics" combine -o "$outdir/%Y/%M-%D.stat" "$tmpoutdir"/*.stat
rm -rf "$tmpoutdir"

