#!/bin/env tclsh package require sqlite3 proc fatal {reason {code -1}} { puts stderr "$argv0: fatal: $reason" exit $code } proc usage {} { global argv0 puts stderr "usage: $argv0 DB-PATH ?-force? ?-timestamp TIMESTAMP? GAME-URL ?GAME-URL ...?" exit -1 } if {[llength $argv] < 2} usage set gameurls [lassign $argv dbpath] if {[lindex $gameurls 0] == "-force"} { set force 1 set gameurls [lrange $gameurls 1 end] } else { set force 0 } if {[lindex $gameurls 0] == "-timestamp"} { set now [lindex $gameurls 1] set gameurls [lrange $gameurls 2 end] } else { set now [clock format [clock seconds] -format %Y%m%d] } if {$gameurls == {}} usage if {[catch {sqlite3 db $dbpath -create false}]} { fatal "can't open \"$dbpath\"" } foreach url $gameurls { if {![db exists {SELECT * FROM titles WHERE href = :url}]} { puts stderr "game not in database: $url" continue } if $force { db eval { UPDATE titles SET played = :now WHERE href = :url } } else { db eval { UPDATE titles SET played = :now WHERE href = :url AND played ISNULL } } }