home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / docbatch.tcl < prev    next >
Text File  |  1997-10-01  |  3KB  |  140 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)docbatch.tcl    /main/titanic/14
  6. #      Author:         voyager
  7. #      Description:    do some docwriter actions as batch job
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)docbatch.tcl    /main/titanic/14   1 Oct 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. source [m4_path_name tcl libocl.tcl]
  12. source [m4_path_name tcl platform.tcl]
  13.  
  14. proc read_require_file {file} {
  15.     if [catch {set name [m4_path_name tcl $file]}] {
  16.         set name $file
  17.     } else {
  18.         # check again
  19.         global required_files
  20.         if [info exists required_files($name)] {
  21.             return
  22.         }
  23.         set required_files($name) 1
  24.     }
  25.     source $name
  26. }
  27.  
  28. require procs.tcl
  29. require messagehdl.tcl
  30.  
  31. proc wmtkmessage {msg} {
  32.     puts $msg
  33. }
  34.  
  35. proc wmtkerror {msg} {
  36.     if [info exists errorInfo] {
  37.         if [strncmp $msg $errorInfo] {
  38.         append msg "\n$errorInfo"
  39.         } else {
  40.         set msg $errorInfo
  41.         }
  42.     }
  43.     set errorMsg ""
  44.     set prevStr ""
  45.     set nl ""
  46.     foreach str [split $msg "\n"] {
  47.         if [strncmp $str $prevStr] {
  48.         append errorMsg "$nl$str"
  49.         set nl "\n"
  50.         set prevStr $str
  51.         }
  52.     }
  53.     puts $errorMsg
  54. }
  55.  
  56. proc wmtkfatal {msg} {
  57.     wmtkerror $msg
  58.     exit
  59. }
  60.  
  61. set moduleHdlr [ModuleHandler new \
  62.     -moduleSpecSetChanged {
  63.         set s_modules [%this selectedModuleSpecSet]
  64.         foreach file [%this getFiles tcl s_docbatch.tcl $s_modules] {
  65.             source $file
  66.         }
  67.     } ]
  68.  
  69. global globalModuleHandler
  70. set globalModuleHandler $moduleHdlr
  71.  
  72. # redefine proc require_module_file
  73. proc require_module_file {file moduleName} {
  74.     set module [$moduleHdlr getModuleSpec $moduleName]
  75.     set moduleFile [$moduleHdlr getFiles tcl $file $module]
  76.     if {"$moduleFile" != ""} {
  77.         require [lindex $moduleFile 0]
  78.     }
  79. }
  80.  
  81. # process corporate and user specs
  82. eval [$moduleHdlr moduleSpecSetChanged]
  83. $moduleHdlr setCurrentContext
  84. # process other level specs
  85. eval [$moduleHdlr moduleSpecSetChanged]
  86.  
  87. require config.tcl
  88. require_module_file docgenerat.tcl docwriter
  89. require_module_file docprocs.tcl docwriter
  90. require_module_file docstructp.tcl docwriter
  91. require_module_file doctool.tcl docwriter
  92.  
  93.  
  94. global classCount
  95. set classCount 0
  96.  
  97. sourceOptional u_docbatch
  98.  
  99. global docToolObjectHdlr
  100. set docToolObjectHdlr [CustObjHandler new $globalModuleHandler]
  101. $docToolObjectHdlr setCurrentContext
  102.  
  103. if {[llength $argv] != 4} {
  104.     error "Usage: otprint docbatch.tcl -- <command> \
  105.         <configVersion> <systemVersion> <file>"
  106.     exit
  107. }
  108.  
  109. # the component and section generator
  110. set cmd [lindex $argv 0]
  111. set cv [lindex $argv 1]
  112. set sv [lindex $argv 2]
  113. set file [lindex $argv 3]
  114.  
  115. # make a Document
  116. set document [Document new $sv]
  117. $document initialize [ConfigVersion new $cv]
  118.  
  119. # cd to the docdir, (possible) UNC-path not allowed:
  120. set crntPath [pwd]
  121. if {$tcl_platform(platform) != "windows"} {
  122.     cd [$document directory]
  123. }
  124.  
  125. # make the doctool
  126. DocTool new docTool $document
  127.  
  128. DocGenerator new generator
  129. if [catch {set returnValue [docTool startCommand $cmd $file]} msg] {
  130.     wmtkerror $msg
  131.     set returnValue 0
  132. }
  133. # cd back to (possible) UNC-path not allowed:
  134. if {$tcl_platform(platform) != "windows"} {
  135.     cd $crntPath
  136. }
  137.  
  138. wmtkmessage Done
  139. exit $returnValue
  140.