#!/bin/bash

# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

TS_TOPDIR="${0%/*}/../.."
TS_DESC="replay"

. "$TS_TOPDIR/functions.sh"
ts_init "$*"

ts_check_test_command "$TS_CMD_SCRIPT"
ts_check_test_command "$TS_CMD_SCRIPTREPLAY"

SCRIPT_FILE="$(mktemp "${TS_OUTDIR}/scXXXXXXXXXXXXX")"
TIMING_FILE="$(mktemp "${TS_OUTDIR}/tmXXXXXXXXXXXXX")"

echo "record script output with timing" >"$TS_OUTPUT"
"$TS_CMD_SCRIPT" -c "echo hello world; sleep 0.5; echo all done" \
	--timing="$TIMING_FILE" "$SCRIPT_FILE" >>"$TS_OUTPUT" 2>&1

echo "replay script output" >>"$TS_OUTPUT"
"$TS_CMD_SCRIPTREPLAY" "$TIMING_FILE" "$SCRIPT_FILE" 1.5 >>"$TS_OUTPUT" 2>&1

sed -i "s|$SCRIPT_FILE|typescript|g; s|$TIMING_FILE|timingfile|g" "$TS_OUTPUT"

rm -f "$SCRIPT_FILE" "$TIMING_FILE"

ts_finalize
