#!/usr/bin/env tclsh
# $Id$
set KOAKUMA_VERSION "1.00"
set components ""
proc exiting {code} {
exit $code
}
proc loop_components {run} {
global components
foreach {name description version} $components {
eval $run
}
}
proc crash {reason} {
global components KOAKUMA_VERSION
puts stderr "----- Start Koakuma Crash dump log -----"
puts stderr "Included components:"
loop_components {
puts stderr " $name: $description, version $version"
}
puts stderr "Reason: $reason"
puts stderr "----- End Koakuma Crash dump log -----"
puts "Content-Type: text/html"
puts "Status: 500 Internal Server Error"
puts ""
puts ""
puts ""
puts "
"
puts " "
} else {
rputs "
"
}
rputs "
$title
"
}
proc end_html {has_toc} {
global KOAKUMA_VERSION
rputs " "
rputs "
"
rputs "
Powered by Koakuma $KOAKUMA_VERSION"
rputs " "
rputs ""
}
proc add_toc {data} {
global toc
tputs "
# $data
"
lappend toc "$data"
}
proc add_toc2 {data} {
global toc
tputs "
# $data
"
lappend toc "-$data"
}
if { [catch {
set path "[regsub -all {/+} "$env(PATH_INFO)" "/"]"
rputs "Content-Type: text/html"
if { "$path" == "/" } {
add_toc "Tcl Information"
tputs "
"
tputs " "
tputs " "
tputs " Version"
tputs " | "
tputs " "
tputs " $tcl_version"
tputs " | "
tputs "
"
tputs " "
tputs " "
tputs " Platform"
tputs " | "
tputs " "
tputs " $tcl_platform(os)/$tcl_platform(machine) $tcl_platform(osVersion)"
tputs " | "
tputs "
"
tputs "
"
add_toc "Components"
loop_components {
if { [llength [info procs "${name}_info"]] > 0 } {
${name}_info
}
}
set has_projects 0
add_toc "Projects"
open_projects
scan_projects {
upvar 1 has_projects has_projects
if { "$has_projects" == "0" } {
set has_projects 1
tputs "
"
}
tputs ""
tputs " $name | "
tputs " $description | "
tputs "
"
}
close_projects
if { "$has_projects" == "1" } {
tputs "
"
} else {
tputs "No projects have been added, yet."
}
rputs ""
start_html "Main" 1
rputs "$content"
end_html 1
} elseif { [regexp {^/rpc.*$} "$path"] } {
} elseif { [regexp {^/project/[^/]+.*$} "$path"] } {
regexp {^/project/([^/]+).*$} "$path" -> projname
open_projects
set has_project [project_exists "$projname"]
close_projects
if { "$has_project" != "" } {
add_toc "Description"
tputs "[html_escape "$has_project"]"
rputs ""
start_html "Project: $projname" 1
rputs "$content"
end_html 1
} else {
tputs "I could not find the project you were finding."
rputs "Status: 404 Not Found"
rputs ""
start_html "Not Found" 0
rputs "$content"
end_html 0
}
} else {
tputs "I could not find the content you were finding."
rputs "Status: 404 Not Found"
rputs ""
start_html "Not Found" 0
rputs "$content"
end_html 0
}
}] } {
crash "Could not render the HTML"
} else {
puts "$result"
}
exiting 0