make testscript POSIX and shellchecked

This commit is contained in:
Felix Van der Jeugt 2020-12-29 00:51:46 +01:00 committed by Simon Michael
parent 5d664fc528
commit a79a7cfdb8

View File

@ -1,20 +1,18 @@
#!/usr/bin/env bash #!/bin/sh
# POSIX sh would be better for folks on BSD, but unfortunately it has
# a hard time doing the stderr filtering below.
#
# #
# This scripts expects stdin formatted like this: # This scripts expects stdin formatted like this:
# <multi-line csv file> # <multi-line csv file>
# RULES # RULES
# <multi-line rules> # <multi-line rules>
# #
awk -v CSV="t.$$.csv" -v RULES="t.$$.csv.rules" ' cat > t.$$.input
BEGIN{output=CSV} sed '1,/^RULES/d' t.$$.input > t.$$.csv.rules
/^RULES/{output=RULES} sed '/^RULES/,$d' t.$$.input > t.$$.csv
!/^RULES/{print $0 >output}'
trap "rm -f t.$$.csv t.$$.csv.rules" EXIT ERR trap 'rm -f t.$$.input t.$$.csv t.$$.csv.rules t.$$.stderr' EXIT
# Remove variable file name from error messages # Remove variable file name from error messages
:; ( hledger -f csv:t.$$.csv --rules-file t.$$.csv.rules print "$@" ) \ mkfifo t.$$.stderr
2> >( sed -Ee "s/t.*.csv/input/" >&2 ) sed -Ee "s/t\.$$\.csv/input/" t.$$.stderr >&2 &
hledger -f csv:t.$$.csv --rules-file t.$$.csv.rules print "$@" 2> t.$$.stderr