#!/bin/env tclsh package require json 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}] set played [db eval {SELECT count(*) FROM titles WHERE played NOT NULL}] 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 FROM titles WHERE href = :url}] name played if {$played == ""} { puts "$name: unplayed" } else { puts "$name: played $played" } } }