shell.tcl
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 getpackage fileutil fileutil/fileutil.tcl
00008
00009 package require sak::test
00010 package require sak::registry
00011 namespace ::sak::test::shell {}
00012
00013
00014
00015 ret ::sak::test::shell (type argv) {
00016 if {![llength $argv]} {Usage Sub command missing}
00017
00018 set cmd [lindex $argv 0]
00019 set argv [lrange $argv 1 end]
00020
00021 switch -exact -- $cmd {
00022 add {
00023 sak::test::shell::add $argv
00024 }
00025 delete {
00026 sak::test::shell::delete $argv
00027 }
00028 default {
00029 sak::test::usage Unknown command "\"shell $cmd\""
00030 }
00031 }
00032 return
00033 }
00034
00035 ret ::sak::test::shell::list () {
00036 return [sak::registry::local \
00037 get||default Tests Shells {}]
00038 }
00039
00040 ret ::sak::test::shell::add (type paths) {
00041 foreach p $paths {
00042 if {![fileutil::test $p efrx msg "Shell"]} {
00043 sak::test::usage $msg
00044 }
00045 }
00046
00047 set shells [sak::registry::local \
00048 get||default Tests Shells {}]
00049 array set known {}
00050 foreach sh $shells {set known($sh) .}
00051
00052 set changed 0
00053 foreach p $paths {
00054 if {[info exists known($p)]} continue
00055 lappend shells $p
00056 set changed 1
00057 }
00058
00059 if {$changed} {
00060 sak::registry::local \
00061 set Tests Shells [lsort -dict $shells]
00062 }
00063 return
00064 }
00065
00066 ret ::sak::test::shell::delete (type paths) {
00067 set shells [sak::registry::local \
00068 get||default Tests Shells {}]
00069 array set known {}
00070 foreach sh $shells {set known($sh) .}
00071
00072 set changed 0
00073 foreach p $paths {
00074 if {![info exists known($p)]} continue
00075 unset known($p)
00076 set changed 1
00077 }
00078
00079 if {$changed} {
00080 sak::registry::local \
00081 set Tests Shells [lsort -dict \
00082 [array names known]]
00083 }
00084 return
00085 }
00086
00087
00088
00089 namespace ::sak::test::shell {
00090 }
00091
00092
00093
00094
00095
00096 package provide sak::test::shell 1.0
00097