50 lines
		
	
	
	
		
			949 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			949 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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
 |