From 4f49b16079b27d7ce633619e4cddfdf2bffbc952 Mon Sep 17 00:00:00 2001 From: cashmere Date: Fri, 4 Sep 2026 09:05:24 +0200 Subject: initial commit --- test/fileStat.th1 | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 test/fileStat.th1 (limited to 'test/fileStat.th1') diff --git a/test/fileStat.th1 b/test/fileStat.th1 new file mode 100644 index 0000000..071b587 --- /dev/null +++ b/test/fileStat.th1 @@ -0,0 +1,102 @@ + + proc doSomeTclSetup {} { + # + # NOTE: Copy repository file name to the Tcl interpreter. This is + # done first (once) because it will be necessary for almost + # everything else later on. + # + tclInvoke set repository [repository] + + # + # NOTE: Create some procedures in the Tcl interpreter to perform + # useful operations. This could also do things like load + # packages, etc. + # + tclEval { + # + # NOTE: Returns an [exec] command for Fossil, using the provided + # sub-command and arguments, suitable for use with [eval] + # or [catch]. + # + proc getFossilCommand { repository user args } { + global env + + lappend result exec [info nameofexecutable] + + if {[info exists env(GATEWAY_INTERFACE)]} then { + # + # NOTE: This option is required when calling + # out to the Fossil executable from a + # CGI process. + # + lappend result -nocgi + } + + eval lappend result $args + + if {[string length $repository] > 0} then { + # + # NOTE: This is almost certainly required + # when calling out to the Fossil + # executable on the server because + # there is almost never an open + # checkout. + # + lappend result -R $repository + } + + if {[string length $user] > 0} then { + lappend result -U $user + } + + # th1Eval [list html $result
] + + return $result + } + } + } + + proc getLatestTrunkCheckIn {} { + tclEval { + # + # NOTE: Get the unique Id of the latest check-in on trunk. + # + return [lindex [regexp -line -inline -nocase -- \ + {^(?:uuid|hash):\s+([0-9A-F]{40}) } [eval [getFossilCommand \ + $repository "" info trunk]]] end] + } + } + + proc theSumOfAllFiles { id } { + # + # NOTE: Copy check-in Id value to the Tcl interpreter. + # + tclInvoke set id $id + + tclEval { + set count 0 + + foreach line [split [eval [getFossilCommand \ + $repository "" artifact $id]] \n] { + # + # NOTE: Is this an "F" (file) card? + # + if {[string range $line 0 1] eq "F "} then { + incr count + } + } + + return $count + } + } + + doSomeTclSetup; # perform some extra setup for the Tcl interpreter. + + set checkIn [getLatestTrunkCheckIn] + set totalFiles [theSumOfAllFiles $checkIn] +
+ +
+As of trunk check-in decorate \[$checkIn\], this +repository contains html $totalFiles files. +
-- cgit v1.3.1