#!/bin/bash
#
# script2uls
#
# script2uls startet script und sorgt per named-pipe dafuer, dass
# die Datei nich geaendert werden kann.
#
# Aufruf:
# script2uls <filename> <hostname> <Section> <Teststep> <Detail> <date time>
#################################################################
#
if [[ "$1" = "-c" ]]; then
  shift
  CMD=1
fi
#
if [[ $# -lt 6 ]]; then
  echo "usage: `basename $0` [-c] <filename> <hostname> <Section> <Teststep> <Detail> <date time> [<cmd>]"
  exit 1
fi
#
FN=/dev/shm/$1.$$
if ! mkfifo -m 600 $FN.fifo; then
  FN=/tmp/$1.$$
  mkfifo -m 600 $FN.fifo
fi
#
echo
echo "****************************************************"
echo "* Alle Aktionen werden aufgezeichnet und gesichert *"
echo "****************************************************"
echo
unset PROFILEREAD
#
if [[ -z "$CMD" ]] && which asciinema &>/dev/null; then
  sudo send_script2uls -e cast $FN "$2" "$3" "$4" "$5" "$6" &
  CPID=$!
  sleep 0.1
  if [[ ! -d /proc/$CPID ]]; then
    echo "Error: send_script2uls kann nicht gestartet werden."
    exit 1
  fi
  shift 6
  if [[ -z "$1" ]]; then
    asciinema rec $FN.fifo -q
  else
    asciinema rec $FN.fifo -q -c "$@"
  fi
else
  sudo send_script2uls $FN "$2" "$3" "$4" "$5" "$6" &
  CPID=$!
  sleep 0.1
  if [[ ! -d /proc/$CPID ]]; then
    echo "Error: send_script2uls kann nicht gestartet werden."
    exit 1
  fi
  shift 6
  if [[ -z "$1" ]]; then
    /usr/bin/script -e -qf $FN.fifo
    ret=$?
  else
    /usr/bin/script -e -c "$*" -qf $FN.fifo
    ret=$?
  fi
fi
wait $CPID
rm -f $FN.fifo
exit $ret
