| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | #!/usr/bin/env bash | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  | # Copyright 2014 Vladimir Ivanov <ivvl82@gmail.com> | 
					
						
							|  |  |  |  | # Distributed under the terms of the GNU General Public License v2 | 
					
						
							| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | # REPO_DIR="https://github.com/fat0troll/lorchess" | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  | REPO_DIR= | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | # Specify the tournament here | 
					
						
							|  |  |  |  | TOURNAMENT= | 
					
						
							| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  | # Version information | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  | VERSION="0.6" | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | argv0=${0##*/} | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function usage { | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  |     cat <<EOF | 
					
						
							|  |  |  |  | List games on tours of tournament | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Usage: $argv0 [options] [tours] | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |   Put the script under the root directory of your repository or set | 
					
						
							| 
									
										
										
										
											2014-09-15 14:28:03 +04:00
										 |  |  |  |   inner variable REPO_DIR to point to your local or remote (GitHub) | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |   repository. If the tournament is not the last one (default), store | 
					
						
							|  |  |  |  |   its sub-directory in inner variable TOURNAMENT. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   Tournament tours are restricted to sequence 'tours' given in the | 
					
						
							|  |  |  |  |   Bash-style syntax, i.e., 'tours' may include explicit numbers | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  |   (tours=1 3), intervals (tours={1..5}), or any combination of them. | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |   If no tours are specified, display all started tours (use '-f' to | 
					
						
							|  |  |  |  |   see future tours too). By default, only unaccomplished games are | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  |   listed. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Options: | 
					
						
							|  |  |  |  |   -a            List accomplished games too | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |   -f            Allow to display future tours | 
					
						
							| 
									
										
										
										
											2014-04-20 19:08:12 +03:00
										 |  |  |  |   -p PLAYER     Show game if PLAYER is a part of a player's name | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |   -o FORMAT     Specify the output format; FORMAT is 'term' (default), | 
					
						
							|  |  |  |  |                 'html', or 'lor' | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  |   -l            Add the URL link to game (if accomplished) | 
					
						
							|  |  |  |  |   -h            Show this help output | 
					
						
							|  |  |  |  |   -v            Show version information | 
					
						
							|  |  |  |  | EOF | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     exit "${1:-0}" | 
					
						
							| 
									
										
										
										
											2014-04-20 14:13:14 +04:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function version { | 
					
						
							|  |  |  |  |     exec echo "${argv0}-${VERSION}" | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function setup_repo { | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     [[ -z $REPO_DIR ]] && REPO_DIR=`dirname "$0"` | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     CURL_OPTS="-q --fail --location --silent" | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-15 14:28:03 +04:00
										 |  |  |  |     if [[ $REPO_DIR =~ ^https://github\.com/(.*) ]]; then | 
					
						
							|  |  |  |  |         REPO_API="https://api.github.com/repos/${BASH_REMATCH[1]}/contents" | 
					
						
							|  |  |  |  |         REPO_URL="${REPO_DIR}/raw/master" | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # If no tournament given, set it to the last one | 
					
						
							|  |  |  |  |         if [[ -z $TOURNAMENT ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |             local year=$(curl $CURL_OPTS $REPO_API \ | 
					
						
							| 
									
										
										
										
											2014-09-04 12:15:59 +04:00
										 |  |  |  |                 | sed -En "/\"path\":/h;/\"type\": \"dir\"/ \ | 
					
						
							|  |  |  |  |                     {g;s|.*\"([0-9]{4})\".*|\1|p;}" | tail -1) | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |             TOURNAMENT=$(curl $CURL_OPTS ${REPO_API}/${year} \ | 
					
						
							| 
									
										
										
										
											2014-09-04 12:15:59 +04:00
										 |  |  |  |                 | sed -En "/\"path\":/h;/\"type\": \"dir\"/ \ | 
					
						
							|  |  |  |  |                     {g;s|.*\"(${year}/[0-9]-.*)\".*|\1|p;}" | tail -1) | 
					
						
							| 
									
										
										
										
											2014-09-15 14:28:03 +04:00
										 |  |  |  |         fi | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |         # Convert REPO_DIR to an absolute path | 
					
						
							|  |  |  |  |         [[ ! $REPO_DIR =~ ^/ ]] && REPO_DIR=$(cd $REPO_DIR; pwd) | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-15 14:28:03 +04:00
										 |  |  |  |         REPO_URL="file://${REPO_DIR}" | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # If no tournament given, set it to the last one | 
					
						
							|  |  |  |  |         if [[ -z $TOURNAMENT ]]; then | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |             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 \ | 
					
						
							| 
									
										
										
										
											2014-11-28 16:59:31 +03:00
										 |  |  |  |                 | sed -E "s|${REPO_DIR}/(.*)/|\1|") | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function show_tour_sequence { | 
					
						
							|  |  |  |  |     local tour_seq=$@ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     # If no tour sequence given, set it to all tours | 
					
						
							|  |  |  |  |     if [[ -z $tour_seq ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |         if [[ $REPO_DIR =~ ^https://github\.com/ ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |             tour_seq=$(curl $CURL_OPTS ${REPO_API}/${TOURNAMENT}/tours \ | 
					
						
							| 
									
										
										
										
											2014-09-04 12:15:59 +04:00
										 |  |  |  |                 | sed -En "/\"path\":/h;/\"type\": \"dir\"/ \ | 
					
						
							|  |  |  |  |                     {g;s|.*\"${TOURNAMENT}/tours/([0-9]{2})\".*|\1|p;}") | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         else | 
					
						
							|  |  |  |  |             tour_seq=$(ls -1 -d ${REPO_DIR}/${TOURNAMENT}/tours/[0-9][0-9]/ \ | 
					
						
							|  |  |  |  |                 | sed -E "s|${REPO_DIR}/${TOURNAMENT}/tours/([0-9]{2})/|\1|") | 
					
						
							|  |  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     else | 
					
						
							|  |  |  |  |         # Don't care about the begging of an explicitly specified tour | 
					
						
							|  |  |  |  |         SHOW_FUTURE=true | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     for tour in $tour_seq; do | 
					
						
							|  |  |  |  |         # Change tour numbers: '1' -> '01', '2' -> '02', and so on | 
					
						
							|  |  |  |  |         tour=$(printf "%02g" $tour) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         # *NOTE* The incorporation of a newline at the end of | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |         # 'tour_info' (--write-out '\n') is important and allows one | 
					
						
							|  |  |  |  |         # to read the last line with no trailing '\n' | 
					
						
							|  |  |  |  |         local tour_info=$(curl $CURL_OPTS --write-out '\n' \ | 
					
						
							|  |  |  |  |             ${REPO_URL}/${TOURNAMENT}/tours/${tour}/tour_info) | 
					
						
							|  |  |  |  |         [[ -n $tour_info ]] && output_tour_info | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     done | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function output_tour_info { | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |     local date_re="([0-9?]{2})\.([0-9?]{2})\.([0-9?]{4})" | 
					
						
							| 
									
										
										
										
											2015-01-06 00:28:25 +03:00
										 |  |  |  |     local score_re="(1|½|0|\+|−)" | 
					
						
							| 
									
										
										
										
											2015-01-03 16:54:30 +03:00
										 |  |  |  |     local res_re="${score_re}-${score_re}" | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     local tour_num= date_beg= date_end= | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |     local white= black= result= game_date= | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  |     # Lines with game info | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     local output_lines= | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     while read line; do | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |         # Read the number of tour | 
					
						
							|  |  |  |  |         get_tour_num | 
					
						
							|  |  |  |  |         # Read the begging and end of tour | 
					
						
							|  |  |  |  |         get_tour_dates | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  |         # Keep game info if needed, and store it in variables 'white', | 
					
						
							|  |  |  |  |         # 'black', 'result', and 'game_date' | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |         if keep_game_info; then | 
					
						
							| 
									
										
										
										
											2014-09-07 16:43:00 +04:00
										 |  |  |  |             output_lines+=$(sed -E "s/$date_re +//" <<< "$line") | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |             # Append the link of game to the end of output line | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  |             if $SHOW_LINK; then | 
					
						
							| 
									
										
										
										
											2015-01-01 21:54:56 +03:00
										 |  |  |  |                 [[ $result =~ ^(\+|-)*$ ]] || append_game_url | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  |             fi | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |             output_lines+="\n" | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2014-04-30 00:31:28 +03:00
										 |  |  |  |     done <<< "$tour_info" | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     [[ -n $output_lines ]] && eval info_output_$FORMAT | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function get_tour_num { | 
					
						
							|  |  |  |  |     if [[ -z $tour_num ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-04 09:11:26 +04:00
										 |  |  |  |         [[ $line =~ "Тур №"([0-9]+) ]] && tour_num=${BASH_REMATCH[1]} | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |         continue | 
					
						
							|  |  |  |  |     fi | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function get_tour_dates { | 
					
						
							|  |  |  |  |     if [[ -z $date_beg || -z $date_end ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-04 09:11:26 +04:00
										 |  |  |  |         if [[ $line =~ "Время проведения:"\ +($date_re)\ +-\ +($date_re) ]]; then | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |             date_beg=${BASH_REMATCH[1]} date_end=${BASH_REMATCH[5]} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if ! $SHOW_FUTURE; then | 
					
						
							|  |  |  |  |                 # Unknown beginning of tour | 
					
						
							| 
									
										
										
										
											2014-09-06 17:40:53 +04:00
										 |  |  |  |                 [[ $date_beg =~ \? ]] && exit 0 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 17:27:20 +04:00
										 |  |  |  |                 if date --version >/dev/null 2>&1; then | 
					
						
							|  |  |  |  |                     local date_beg_gnu=$(sed -E "s/${date_re}/\3-\2-\1/" <<< $date_beg) | 
					
						
							|  |  |  |  |                     local date_tour=$(date -d $date_beg_gnu +%s) | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                     local date_beg_bsd=$(sed -E "s/${date_re}/-v\3y -v\2m -v\1d/" <<< $date_beg) | 
					
						
							|  |  |  |  |                     local date_tour=$(date $date_beg_bsd +%s) | 
					
						
							|  |  |  |  |                 fi | 
					
						
							|  |  |  |  |                 local date_this=$(date +%s) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |                 # The date of tour later than today | 
					
						
							| 
									
										
										
										
											2014-09-06 17:40:53 +04:00
										 |  |  |  |                 (( date_tour > date_this )) && exit 0 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |             fi | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             # Use short dates | 
					
						
							|  |  |  |  |             date_beg=${date_beg::5} date_end=${date_end::5} | 
					
						
							|  |  |  |  |         fi | 
					
						
							|  |  |  |  |         continue | 
					
						
							|  |  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function keep_game_info { | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |     local keep=1 | 
					
						
							| 
									
										
										
										
											2015-01-03 16:54:30 +03:00
										 |  |  |  |     if [[ $line =~ $date_re\ +([^\ ]+)\ +-\ +([^\ ]+)(\ +$res_re)? ]]; then | 
					
						
							|  |  |  |  |         white=${BASH_REMATCH[4]} | 
					
						
							|  |  |  |  |         black=${BASH_REMATCH[5]} | 
					
						
							| 
									
										
										
										
											2015-01-01 21:54:56 +03:00
										 |  |  |  |         result=${BASH_REMATCH[7]}-${BASH_REMATCH[8]} | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |         game_date=${BASH_REMATCH[3]}-${BASH_REMATCH[2]}-${BASH_REMATCH[1]} | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-20 19:08:12 +03:00
										 |  |  |  |         # If the player was passed as an argument, check if it is his game or not | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         if [[ -z $PLAYER || $white =~ $PLAYER || $black =~ $PLAYER ]]; then | 
					
						
							| 
									
										
										
										
											2014-04-20 19:08:12 +03:00
										 |  |  |  |             if $SHOW_ALL; then | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |                 keep=0 | 
					
						
							| 
									
										
										
										
											2014-04-20 19:08:12 +03:00
										 |  |  |  |             else | 
					
						
							|  |  |  |  |                 # Keep line if the game is not finished | 
					
						
							| 
									
										
										
										
											2015-01-01 21:54:56 +03:00
										 |  |  |  |                 [[ $result == "-" ]] && keep=0 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |             fi | 
					
						
							|  |  |  |  |         fi | 
					
						
							|  |  |  |  |     fi | 
					
						
							|  |  |  |  |     return $keep | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  | function append_game_url { | 
					
						
							| 
									
										
										
										
											2014-04-30 22:38:43 +03:00
										 |  |  |  |     local tour=$(printf "%02g" "$tour_num") | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     local game_dir=${game_date}-${white}-vs-${black} | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |     local game_url=$(curl $CURL_OPTS \ | 
					
						
							|  |  |  |  |         ${REPO_URL}/${TOURNAMENT}/tours/${tour}/${game_dir}/1.pgn \ | 
					
						
							| 
									
										
										
										
											2014-09-04 09:11:26 +04:00
										 |  |  |  |         | sed -En "s/\[Site \"([a-z]+:[^\"]+)\"\]/\1/p") | 
					
						
							| 
									
										
										
										
											2014-09-02 20:40:08 +04:00
										 |  |  |  |     output_lines+=" $game_url" | 
					
						
							| 
									
										
										
										
											2014-03-27 20:54:45 +02:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function info_output_term { | 
					
						
							| 
									
										
										
										
											2014-03-27 13:26:01 +02:00
										 |  |  |  |     echo -n "$(tput setaf 2)${tour_num} тур " | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |     echo "$(tput setaf 6)(${date_beg} - ${date_end})$(tput sgr0)" | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     for line in "$(echo -e "$output_lines")"; do | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |         # Highlight player's name | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         if [[ -n $PLAYER ]]; then | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |             players=$(grep -o "[^ ]*${PLAYER}[^ ]*" <<< "$line") | 
					
						
							|  |  |  |  |             for name in $players; do | 
					
						
							| 
									
										
										
										
											2014-04-23 00:33:13 +03:00
										 |  |  |  |                 # PLAYER is a part of 'game_url' or 'result' | 
					
						
							| 
									
										
										
										
											2015-01-03 16:54:30 +03:00
										 |  |  |  |                 [[ $name =~ ^http:// || $name =~ ^${res_re}$ ]] && continue | 
					
						
							| 
									
										
										
										
											2014-04-23 00:33:13 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-07 16:43:00 +04:00
										 |  |  |  |                 line=$(sed -E "s/(${name})/$(tput setaf 1)\1$(tput sgr0)/" <<< "$line") | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |             done | 
					
						
							|  |  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |         # Highlight result | 
					
						
							| 
									
										
										
										
											2015-01-08 13:22:13 +03:00
										 |  |  |  |         line=$(sed -E "s/ ${res_re}( |$)/ $(tput setaf 6)\1-\2$(tput sgr0)\3/" <<< "$line") | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |         echo "$line" | 
					
						
							|  |  |  |  |     done | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |     echo | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function info_output_lor { | 
					
						
							| 
									
										
										
										
											2014-03-27 16:21:15 +02:00
										 |  |  |  |     echo "[b]${tour_num} тур (${date_beg} - ${date_end})[/b]" | 
					
						
							| 
									
										
										
										
											2014-03-27 13:26:01 +02:00
										 |  |  |  |     echo "[list]" | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |     echo -en "$output_lines" | while read white hyphen black result url; do | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         [[ -n $url ]] && result="[url=${url}]${result}[/url]" | 
					
						
							| 
									
										
										
										
											2014-03-27 16:21:15 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-20 22:11:22 +04:00
										 |  |  |  |         echo "  [*] [user]${white}[/user] - [user]${black}[/user] ${result}" | 
					
						
							| 
									
										
										
										
											2014-03-27 13:26:01 +02:00
										 |  |  |  |     done | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     echo "[/list]" | 
					
						
							|  |  |  |  |     echo | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function info_output_html { | 
					
						
							| 
									
										
										
										
											2014-03-27 17:31:56 +02:00
										 |  |  |  |     echo "<div class=\"tour-info\">" | 
					
						
							| 
									
										
										
										
											2014-03-27 21:52:49 +02:00
										 |  |  |  |     echo "  <table class=\"table table-condensed\">" | 
					
						
							| 
									
										
										
										
											2014-03-27 17:31:56 +02:00
										 |  |  |  |     echo "    <caption>" | 
					
						
							|  |  |  |  |     echo "      <strong>${tour_num} тур (${date_beg} - ${date_end})</strong>" | 
					
						
							|  |  |  |  |     echo "    </caption>" | 
					
						
							|  |  |  |  |     echo "    <tbody>" | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 00:00:56 +04:00
										 |  |  |  |     echo -en "$output_lines" | while read white hyphen black result url; do | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         [[ -n $url ]] && result="<a href=\"${url}\">${result}</a>" | 
					
						
							| 
									
										
										
										
											2014-03-27 17:31:56 +02:00
										 |  |  |  |         echo "      <tr>" | 
					
						
							| 
									
										
										
										
											2014-03-27 17:59:37 +02:00
										 |  |  |  |         echo "        <td>${white} - ${black}</td><td class=\"result\">${result}</td>" | 
					
						
							| 
									
										
										
										
											2014-03-27 17:31:56 +02:00
										 |  |  |  |         echo "      </tr>" | 
					
						
							|  |  |  |  |     done | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     echo "    </tbody>" | 
					
						
							|  |  |  |  |     echo "  </table>" | 
					
						
							|  |  |  |  |     echo "</div>" | 
					
						
							|  |  |  |  |     echo | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | function die { | 
					
						
							|  |  |  |  |     echo "$@" 1>&2 | 
					
						
							|  |  |  |  |     exit 1 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function checkargs { | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |     [[ $OPTARG =~ ^-[afpolhv]$ ]] && die "Option -${opt}: argument not found" | 
					
						
							|  |  |  |  |     [[ $opt == o && ! $OPTARG =~ ^(term|html|lor)$ ]] && die "Incorrect FORMAT specified" | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-10-20 12:28:50 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  | FORMAT=term | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | SHOW_ALL=false | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  | SHOW_FUTURE=false | 
					
						
							| 
									
										
										
										
											2014-03-27 20:54:45 +02:00
										 |  |  |  | SHOW_LINK=false | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  | while getopts afp:o:lhv opt; do | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |     case $opt in | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |         a)  SHOW_ALL=true | 
					
						
							|  |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |         f)  SHOW_FUTURE=true | 
					
						
							|  |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |         p)  checkargs | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |             PLAYER=$OPTARG | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-09-03 23:48:27 +04:00
										 |  |  |  |         o)  checkargs | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |             FORMAT=$OPTARG | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |             ;; | 
					
						
							|  |  |  |  |         l)  SHOW_LINK=true | 
					
						
							|  |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         h)  usage | 
					
						
							|  |  |  |  |             ;; | 
					
						
							|  |  |  |  |         v)  version | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  |         *)  usage 1 | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  |             ;; | 
					
						
							| 
									
										
										
										
											2014-03-27 09:52:44 +02:00
										 |  |  |  |     esac | 
					
						
							| 
									
										
										
										
											2013-09-21 02:20:19 +03:00
										 |  |  |  | done | 
					
						
							| 
									
										
										
										
											2013-09-25 23:11:13 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  | shift $(($OPTIND - 1)) | 
					
						
							| 
									
										
										
										
											2014-08-31 21:08:09 +04:00
										 |  |  |  | setup_repo | 
					
						
							|  |  |  |  | show_tour_sequence $@ | 
					
						
							| 
									
										
										
										
											2014-04-20 14:42:19 +04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-25 23:11:13 +03:00
										 |  |  |  | exit 0 |