package require Tcl 8.5 package require trofs 0.4 eval [package unknown] Tcl [package provide Tcl] foreach p [package names] { if {[string match *::* $p]} { # Don't handle this case yet; TM file names can't contain :: continue } foreach v [package versions $p] { set loadScript [package ifneeded $p $v] if {[catch {llength $loadScript} l]} {continue} if {[lindex $loadScript 0] ne "source"} {continue} set file [lindex $loadScript 1] if {![file readable $file]} {continue} set dir [file dirname $file] set tail [file tail $file] if {[string match *.tm $tail]} {continue} set numFiles [llength [glob -directory $dir *]] if {($numFiles == 2) && ([catch {glob -directory $dir pkgIndex.tcl}] == 0)} { # Installed package is just script + pkgIndex. # It's very likely already in suitable TM format file copy -force $file $p-$v.tm continue } set f [open $p-$v.tm w] puts $f {package require Tcl 8.5} puts $f {package require trofs 0.4} puts $f [subst -nocommands { source [file join [trofs::mount [info script]] $tail] }] close $f trofs::archive $dir $p-$v.tm } }
See also:
- Tcl Modules
- Another Tcl module maker which can also wrap a DLL