Script 'game-add': check for duplicate game.

This commit is contained in:
vonavi 2014-12-15 20:39:07 +03:00
parent f080fa0208
commit b288dc1ee8

View File

@ -30,9 +30,11 @@ Usage:
The first form fills the results of chess games and stores their PGN The first form fills the results of chess games and stores their PGN
files, assuming that all the games were played by the same pair of files, assuming that all the games were played by the same pair of
players on tour <num> of the tournament. The PGN files are sorted by players on tour <num> of the tournament. Each game should be
their timestamps, unless '-u' is set. Each game should be available available at the corresponding <url> (lichess.org). The PGN files
at the corresponding <url> (lichess.org). are sorted by their timestamps, unless '-u' is set. The date of
games is assigned to that of the game closing the tour, i.e., the
last one.
The second form shows this help output. The third form shows version The second form shows this help output. The third form shows version
information. information.
@ -50,6 +52,16 @@ function version {
exec echo "${argv0}-${VERSION}" exec echo "${argv0}-${VERSION}"
} }
function game_check_args {
# For now, tour number should be given explicitly
[[ -z $TOUR || $# == 0 ]] && usage 1
# Don't add and clean up games simultaneously
$ADD_GAMES && $CLEANUP_GAMES && usage 1
# Check for duplicate URL
local url_uniq=$(xargs -n1 <<< "$@" | sort -u | wc -l)
(( $# == $url_uniq )) || die "Game URLs not unique."
}
function game_setup { function game_setup {
date_re="[0-9?]{2}\.[0-9?]{2}\.[0-9?]{4}" date_re="[0-9?]{2}\.[0-9?]{2}\.[0-9?]{4}"
: ${REPO_DIR:=`dirname "$0"`} : ${REPO_DIR:=`dirname "$0"`}
@ -327,7 +339,7 @@ function die {
exit 1 exit 1
} }
function checkargs { function game_tour {
[[ $OPTARG =~ ^[0-9]+$ ]] || die "Incorrect tour number." [[ $OPTARG =~ ^[0-9]+$ ]] || die "Incorrect tour number."
TOUR=$(printf "%02g" $OPTARG) TOUR=$(printf "%02g" $OPTARG)
} }
@ -339,20 +351,16 @@ while getopts act:uhv opt; do
case $opt in case $opt in
a) ADD_GAMES=true ;; a) ADD_GAMES=true ;;
c) CLEANUP_GAMES=true ;; c) CLEANUP_GAMES=true ;;
t) checkargs ;; t) game_tour ;;
u) SORT_GAMES=false ;; u) SORT_GAMES=false ;;
h) usage ;; h) usage ;;
v) version ;; v) version ;;
*) usage 1 ;; *) usage 1 ;;
esac esac
done done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
# For now, tour number should be given explicitly
[[ -z $TOUR || $# == 0 ]] && usage 1
# Don't add and clean up games simultaneously
$ADD_GAMES && $CLEANUP_GAMES && usage 1
game_check_args $@
game_setup game_setup
declare -a TMP_PGN_FILES declare -a TMP_PGN_FILES
game_tmp_pgns $@ game_tmp_pgns $@