pub const SCRIPT: &str = r#"
diag=/home/runner/_diag keep=/home/runner/_diag/.runnerd-pages start_page=$1 start_offset=$2 job= record=
declare -A off
page_of() { local page=${1##*_}; echo "${page%.log}"; }
while :; do
if [ -z "$job" ]; then
for w in "$diag"/Worker_*.log; do
[ -f "$w" ] || continue
id=$(grep -m1 -A1 '"k": "check_run_id"' "$w" | sed -n 's/.*"v": \([0-9]*\).*/\1/p')
run=$(grep -m1 -A1 '"k": "run_id"' "$w" | sed -n 's/.*"v": "\([0-9]*\)".*/\1/p')
record=$(grep -m1 '"jobId": "' "$w" | sed -n 's/.*"jobId": "\([0-9a-f-]*\)".*/\1/p')
# Only now: creating _diag before the runner does would leave it unwritable to the runner.
if [ -n "$id" ] && [ -n "$run" ] && [ -n "$record" ]; then
job=$id
mkdir -p -m 700 "$keep"
echo "@@job $id $run"
fi
done
fi
if [ -n "$job" ]; then
for f in "$diag"/pages/*_"$record"_*.log; do
[ -f "$f" ] && [ "$(page_of "$f")" -ge "$start_page" ] && [ ! -e "$keep/${f##*/}" ] \
&& ln "$f" "$keep/${f##*/}" 2> /dev/null
done
for k in "$keep"/*_"$record"_*.log; do
[ -f "$k" ] || continue
name=${k##*/} page=$(page_of "$k") gone=
if [ "$page" -lt "$start_page" ]; then rm -f "$k"; continue; fi
[ -e "$diag/pages/$name" ] || gone=1
size=$(stat -c %s "$k")
o=${off[$name]:-0}
[ -n "${off[$name]}" ] || [ "$page" -ne "$start_page" ] || o=$start_offset
if [ "$size" -gt "$o" ]; then
echo "@@page $page $o $((size - o))"
tail -c +$((o + 1)) "$k" | head -c $((size - o))
fi
off[$name]=$size
if [ -n "$gone" ]; then echo "@@end $page"; rm -f "$k"; fi
done
fi
sleep 0.2
done
"#;Expand description
The script; bash -c SCRIPT capture <page> <offset> resumes at that page and byte offset.