| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | #!/usr/bin/env bash | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | # Copyright 2014 Vladimir Ivanov <ivvl82@gmail.com> | 
					
						
							|  |  |  | # Distributed under the terms of the GNU General Public License v2 | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | REPO_DIR= | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | # Specify the tournament here | 
					
						
							|  |  |  | TOURNAMENT= | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | function parse_setup { | 
					
						
							|  |  |  |     [[ -z $REPO_DIR ]] && REPO_DIR=`dirname "$0"` | 
					
						
							|  |  |  |     # Convert REPO_DIR to an absolute path | 
					
						
							|  |  |  |     [[ ! $REPO_DIR =~ ^/ ]] && REPO_DIR=$(cd ${REPO_DIR}; pwd) | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |     # If no tournament given, set it to the last one | 
					
						
							|  |  |  |     if [[ -z $TOURNAMENT ]]; then | 
					
						
							|  |  |  |         local year_dir=$(ls -1 -d ${REPO_DIR}/[0-9][0-9][0-9][0-9]/ | tail -1) | 
					
						
							|  |  |  |         TOURNAMENT=$(ls -1 -d ${year_dir}[0-9]-*/ | tail -1 \ | 
					
						
							|  |  |  |             | sed -E "s|${REPO_DIR}/(.*)|\1|") | 
					
						
							|  |  |  |         # Remove the trailing slash | 
					
						
							|  |  |  |         TOURNAMENT=${TOURNAMENT%/} | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | function parse_tour_info { | 
					
						
							|  |  |  |     # Add a newline at the end of 'tour_info' to parse the last line | 
					
						
							|  |  |  |     local tour_info=$(cat "${REPO_DIR}/${TOURNAMENT}/tours/${tour}/tour_info"; echo) | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |     local date_re="[0-9?]{2}\.[0-9?]{2}\.[0-9?]{4}" | 
					
						
							|  |  |  |     local res_re="(1-0|1/2|0-1)" | 
					
						
							|  |  |  |     while read line; do | 
					
						
							|  |  |  |         if [[ $line =~ ^($date_re)\ +([^\ ]+)\ +-\ +([^\ ]+)(\ +$res_re)? ]]; then | 
					
						
							|  |  |  |             local date=${BASH_REMATCH[1]} | 
					
						
							|  |  |  |             local white=${BASH_REMATCH[2]} | 
					
						
							|  |  |  |             local black=${BASH_REMATCH[3]} | 
					
						
							|  |  |  |             local result=${BASH_REMATCH[5]} | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |             # Change the representation of result | 
					
						
							|  |  |  |             [[ $result == 1/2 ]] && result=1/2-1/2 | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |             local round=$(echo "($tour - 1)/($ply_count - 1) + 1" | bc) | 
					
						
							|  |  |  |             parse_to_ini | 
					
						
							|  |  |  |             ((game_counter += 1)) | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  |         fi | 
					
						
							|  |  |  |     done <<< "$tour_info" | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function parse_to_ini { | 
					
						
							|  |  |  |     echo "[game${game_counter}]" | 
					
						
							|  |  |  |     echo "round  = $round" | 
					
						
							| 
									
										
										
										
											2014-09-06 14:20:41 +04:00
										 |  |  |     [[ ! $date =~ \? ]] && echo "date   = $date" | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |     echo "white  = $white" | 
					
						
							|  |  |  |     echo "black  = $black" | 
					
						
							| 
									
										
										
										
											2014-09-06 16:03:33 +04:00
										 |  |  |     [[ -n $result ]] && echo "result = \"$result\"" | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  |     echo | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | parse_setup | 
					
						
							|  |  |  | # Configuration file for players | 
					
						
							|  |  |  | ply_ini=${REPO_DIR}/${TOURNAMENT}/players.ini | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ply_count=$(grep "^\[player" "$ply_ini" | wc -l) | 
					
						
							|  |  |  | tour_seq=$(ls -1 -d ${REPO_DIR}/${TOURNAMENT}/tours/[0-9][0-9]/ \ | 
					
						
							|  |  |  |     | sed -E "s|${REPO_DIR}/${TOURNAMENT}/tours/([0-9]{2})/|\1|") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | game_counter=1 | 
					
						
							|  |  |  | for tour in $tour_seq; do | 
					
						
							|  |  |  |     parse_tour_info | 
					
						
							| 
									
										
										
										
											2013-10-01 09:28:23 +03:00
										 |  |  | done | 
					
						
							| 
									
										
										
										
											2014-09-06 14:13:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | exit 0 |