#!/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 ?GAME-URL ...?"
exit -1
}
if {[llength $argv] < 1} usage
set gameurls [lassign $argv dbpath]
if {[catch {sqlite3 db $dbpath -create false}]} {
fatal "can't open \"$dbpath\""
}
if {[llength $gameurls] == 0} {
set total [db eval {SELECT count(*) FROM titles WHERE ignore = 0}]
set played [db eval {SELECT count(*) FROM titles WHERE played NOT NULL AND ignore = 0}]
puts "database \"[file tail [file rootname $dbpath]]\":"
puts "- $total games"
puts "- $played played"
puts [format "- %.2f%% complete" [expr {(1.0 * $played) / $total * 100}]]
} else {
foreach url $gameurls {
if {![db exists {SELECT * FROM titles WHERE href = :url}]} {
puts stderr "game not in database: $url"
continue
}
lassign [db eval {SELECT name,played,comment FROM titles WHERE href = :url}] name played comment
if {$played == ""} {
puts "$name: unplayed"
} else {
puts "$name: played $played"
}
if {$comment != ""} {
puts " comment: $comment"
}
}
}