You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
949 B
51 lines
949 B
7 years ago
|
#!/bin/sh
|
||
|
|
||
|
error () {
|
||
|
echo >&2 "error: $@"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
find_embedded_trash () {
|
||
|
while read -r line
|
||
|
do
|
||
|
case "$line" in
|
||
|
*Start\ of\ trash\ directory\ of\ \'t[0-9][0-9][0-9][0-9]-*\':*)
|
||
|
test_name="${line#*\'}"
|
||
|
test_name="${test_name%\'*}"
|
||
|
|
||
|
return 0
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
extract_embedded_trash () {
|
||
|
while read -r line
|
||
|
do
|
||
|
case "$line" in
|
||
|
*End\ of\ trash\ directory\ of\ \'$test_name\'*)
|
||
|
return
|
||
|
;;
|
||
|
*)
|
||
|
printf '%s\n' "$line"
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
error "unexpected end of input"
|
||
|
}
|
||
|
|
||
|
# Raw logs from Linux build jobs have CRLF line endings, while OSX
|
||
|
# build jobs mostly have CRCRLF, except an odd line every now and
|
||
|
# then that has CRCRCRLF. 'base64 -d' from 'coreutils' doesn't like
|
||
|
# CRs and complains about "invalid input", so remove all CRs at the
|
||
|
# end of lines.
|
||
|
sed -e 's/\r*$//' | \
|
||
|
while find_embedded_trash
|
||
|
do
|
||
|
echo "Extracting trash directory of '$test_name'"
|
||
|
|
||
|
extract_embedded_trash |base64 -d |tar xzp
|
||
|
done
|