Documentation Source Text

mkscript.tcl
Login

File search/mkscript.tcl from the latest check-in


#!/usr/bin/tclsh
#
# Use this script to build the TCL scripts that implement the search
# functions on the SQLite website.
#
# Usage example:
#
#     tclsh mkscript.tcl search.tcl.in >search.tcl
#
# The input to this script is a template script file, named something
# like "search.tcl.in".  This script reads the template line-by-line and
# applies some minor transformations:
#
#     INCLUDE filename         Lines match this pattern are replaced
#                              by the complete text of filename.  This
#                              is used (for example) to insert the
#                              complete text of wapp.tcl in the appropriate
#                              place CGI scripts
#
#     DOCHEADER title path     Lines matching this pattern invoke the
#                              document_header function contained in the
#                              ../document_header.tcl file to generate
#                              header text for the document, and then
#                              insert that header text in place of the
#                              line
#
# Other than these transformations, the input is copied through into
# the output.
#
if {[llength $argv]!=1} {
  puts stderr "Usage: $argv0 TEMPLATE >OUTPUT"
  exit 1
}
set infile [lindex $argv 0]
set ROOT [file dir [file dir [file normalize $argv0]]]
set HOME [file dir [file normalize $infile]]
set in [open $infile rb]
while {1} {
  set line [gets $in]
  if {[eof $in]} break
  if {[regexp {^INCLUDE (.*)} $line all path]} {
    set in2 [open $HOME/$path rb]
    puts [read $in2]
    close $in2
    continue
  }
  if {[regexp {^DOCHEAD } $line] && [llength $line]==3} {
    source $ROOT/document_header.tcl
    puts [document_header [lindex $line 1] [lindex $line 2]]
    continue
  }
  puts $line
}
close $in