4001929053808f4eee766f26fd2309604981e5a1
3 # let's do some sorcery to bestow IO upon jq
6 rm -f $pipe_name $ipipe_name
7 mkfifo $pipe_name || true
8 xstdout
=$
(readlink
/proc
/self
/fd
/1)
9 stdin
=$
(readlink
/proc
/self
/fd
/0)
10 trap "rm -f $pipe_name" EXIT SIGINT SIGHUP
12 while [[ -e $pipe_name ]]; do
13 timeout
1 cat $pipe_name
15 ) | jq
-nrRM -f "$(dirname "$0")/${STEP:-stepA_mal}.jq" --args "${@}" |
&\
17 >(jq
-Rr 'try fromjson[1]|if type == "string" then . else empty end') \
18 >(while read -r line
; do
19 command=$
(echo $line | jq
-c 'try if .[1] | has("command") then .[1].command else empty end' 2>/dev
/null
)
20 if [[ $command ]]; then
21 # echo ">>> " $command
22 cmd
=$
(echo "$command" | jq
-rMc 'try .cmd catch "ignore"')
25 data
=$
(jq
-nR input
< $stdin)
27 # echo "read $size bytes '$data'"
28 echo "$data" | pv
-q -B $size > $pipe_name
31 filename
=$
(echo "$command" | jq
-Mrc '.args[0]')
33 # echo "Read $filename into $tmp"
34 jq
-rRnc --rawfile content
"$filename" '$content|tojson' > $tmp
35 # echo "dump $tmp to pipe"
37 cat $tmp | pv
-q -B $size > $pipe_name #>/dev/null 2>&1
42 echo "$command" > $tmp
43 filename
=$
(cat $tmp | jq
-Mrc ".args[0]|fromjson")
44 content
=$
(cat $tmp | jq
-Mrc ".args[1]|fromjson")
45 app
=$
(cat $tmp | jq
-Mrc ".args[2]|fromjson")
46 echo "'$app': Writing stuff to $filename"
47 if [[ $res == false
]]; then
48 echo "$content" > "$filename"
50 echo "$content" >> "$filename"
62 trap 'kill -INT $my_pid' EXIT SIGINT