Files
miscutils/ts
T

76 lines
899 B
Bash
Raw Normal View History

2025-11-28 18:12:06 +01:00
#!/usr/bin/env ksh
function tsrun
{
2025-11-28 18:12:06 +01:00
typeset ret
2025-11-28 18:12:06 +01:00
sh -c "$@" >$out 2>$err
ret=$?
sed 's/^/| /' $out
sed 's/^/@ /' $err
2025-11-28 18:12:06 +01:00
(( ret != 0 )) && print "? $ret"
}
function tseval
{
typeset ln
while read ln
do
case ${ln%% *} in
$)
print "$ln"
tsrun "${ln#$}"
;;
2025-11-28 18:12:06 +01:00
!(\?|@|\|))
print "$ln"
;;
esac
done
}
2025-11-28 18:12:06 +01:00
function tsexpand
{
typeset ln
while read ln
do
case ${ln%% *}
in
\?|@|\|)
eval print \""$ln"\"
;;
*)
print "$ln"
;;
esac
done
}
(( $# == 0 )) && exit 64
2025-11-28 18:12:06 +01:00
err=$(mktemp /tmp/XXXXXXXXXX)
out=$(mktemp /tmp/XXXXXXXXXX)
trap "rm $err $out" HUP INT QUIT TERM
if [[ $1 = -b ]]
then
(( $# == 1 )) && exit 64
shift
for fn
do
cp $fn $fn~
(rm $fn && tseval >$fn) <$fn
done
else
2025-11-28 18:12:06 +01:00
exp=$(mktemp /tmp/XXXXXXXXXX)
trap "rm $exp" HUP INT QUIT TERM
for fn
do
2025-11-28 18:12:06 +01:00
tsexpand <$fn >$exp
tseval <$fn | diff -u $exp -
done
2025-11-28 18:12:06 +01:00
rm $exp
fi
2025-11-28 18:12:06 +01:00
rm $err $out