#! /usr/bin/env tclkit # generate html listing off all starkits in this archive lappend auto_path lib package require ascenc #source [file join [file dirname [info script]] kitten.kit] package require md5c # convert md5 + size into a name for that file proc amsname {md5 size} { # 128b MD5 + 27b size -> 31 encoded chars (base-32) append x $md5 [binary format I [expr {$size<<5}]] return [string range [ascenc::b2a_32 $x] 0 end-1] } proc show_vid {sig} { return [format {%d-%d} [expr {(($sig>>16) & 0xFFFF) + 10000}] \ [expr {($sig & 0xFFFF) + 10000}]] } proc showtime {t} { clock format $t -format {%h %e %Y} -gmt 1 } proc showrow {row} { global fd bg foreach {time ip date name vid user msg m1 l1 m2 l2} $row break set x " " set t [showtime $time] set v "" ;# vsn puts $fd "$v$x$x" puts $fd " $x$t$x" puts $fd " KIT$xZIP" puts $fd " $x$vid$x$x$x" puts $fd " $x$x" puts $fd " $msg" puts $fd "" #puts [format {%-15s %s } $name $vid] } proc getinfo {} { #TODO change k/ to kits! TODO foreach x [glob k/*] { set fd [open $x] set data [read $fd] close $fd set name [lindex $data 2] set time [lindex $data 1] regsub -- {-} $time { } time regsub -all {/} $time {-} time set time [clock scan $time -gmt 1] lappend a($name) [linsert $data 0 $time] } foreach x [lsort [array names a]] { lappend r [lsort -integer -decreasing -index 0 $a($x)] } return $r } set info [getinfo] #foreach x $info { puts $x } set fd [open listing.html w] puts $fd "" puts $fd "\ \ " puts $fd "" foreach x $info { set name [lindex $x 0 3] set desc "" #if {$msg ne ""} { set desc $msg } puts $fd "" foreach y $x { showrow $y } } puts $fd "
PackageDateDownloadVsn-IDDescription

$name $desc
"