Hex Artifact Content

Artifact ce6b7093edf1a7c2d63a1a9eac2f43310538b111:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 74 63 6c 73 68 0a 0a 73 65 74 20 6f 75 74 64 69  tclsh..set outdi
0020: 72 20 22 2f 77 65 62 2f 63 75 73 74 6f 6d 65 72  r "/web/customer
0030: 73 2f 6b 69 74 63 72 65 61 74 6f 72 2e 72 6b 65  s/kitcreator.rke
0040: 65 6e 65 2e 6f 72 67 2f 6b 69 74 73 22 0a 73 65  ene.org/kits".se
0050: 74 20 69 6e 66 6f 20 5b 6c 69 73 74 5d 0a 69 66  t info [list].if
0060: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a   {[info exists :
0070: 3a 65 6e 76 28 50 41 54 48 5f 49 4e 46 4f 29 5d  :env(PATH_INFO)]
0080: 7d 20 7b 0a 09 73 65 74 20 69 6e 66 6f 20 5b 6c  } {..set info [l
0090: 6d 61 70 20 69 74 65 6d 20 5b 73 70 6c 69 74 20  map item [split 
00a0: 24 3a 3a 65 6e 76 28 50 41 54 48 5f 49 4e 46 4f  $::env(PATH_INFO
00b0: 29 20 2f 5d 20 7b 0a 09 09 69 66 20 7b 24 69 74  ) /] {...if {$it
00c0: 65 6d 20 65 71 20 22 22 7d 20 7b 0a 09 09 09 63  em eq ""} {....c
00d0: 6f 6e 74 69 6e 75 65 0a 09 09 7d 0a 09 09 72 65  ontinue...}...re
00e0: 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30 20 24 69  turn -level 0 $i
00f0: 74 65 6d 0a 09 7d 5d 0a 7d 0a 73 65 74 20 6b 65  tem..}].}.set ke
0100: 79 20 5b 6c 69 6e 64 65 78 20 24 69 6e 66 6f 20  y [lindex $info 
0110: 65 6e 64 5d 0a 73 65 74 20 72 65 73 75 6c 74 46  end].set resultF
0120: 6f 72 6d 61 74 20 22 68 74 6d 6c 22 0a 69 66 20  ormat "html".if 
0130: 7b 5b 6c 6c 65 6e 67 74 68 20 24 69 6e 66 6f 5d  {[llength $info]
0140: 20 3e 20 31 7d 20 7b 0a 09 73 65 74 20 72 65 73   > 1} {..set res
0150: 75 6c 74 46 6f 72 6d 61 74 20 5b 6c 69 6e 64 65  ultFormat [linde
0160: 78 20 24 69 6e 66 6f 20 30 5d 0a 7d 0a 0a 73 65  x $info 0].}..se
0170: 74 20 73 63 68 65 6d 65 20 68 74 74 70 0a 69 66  t scheme http.if
0180: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a   {[info exists :
0190: 3a 65 6e 76 28 48 54 54 50 53 29 5d 7d 20 7b 0a  :env(HTTPS)]} {.
01a0: 09 73 65 74 20 73 63 68 65 6d 65 20 68 74 74 70  .set scheme http
01b0: 73 0a 7d 0a 73 65 74 20 62 61 73 65 5f 75 72 6c  s.}.set base_url
01c0: 20 22 24 7b 73 63 68 65 6d 65 7d 3a 2f 2f 6b 69   "${scheme}://ki
01d0: 74 63 72 65 61 74 6f 72 2e 72 6b 65 65 6e 65 2e  tcreator.rkeene.
01e0: 6f 72 67 2f 6b 69 74 73 2f 24 6b 65 79 22 0a 0a  org/kits/$key"..
01f0: 73 65 74 20 73 74 61 74 75 73 20 22 55 6e 6b 6e  set status "Unkn
0200: 6f 77 6e 22 0a 73 65 74 20 74 65 72 6d 69 6e 61  own".set termina
0210: 6c 20 30 0a 69 66 20 7b 21 5b 72 65 67 65 78 70  l 0.if {![regexp
0220: 20 7b 5e 5b 30 2d 39 61 2d 66 5d 2b 24 7d 20 24   {^[0-9a-f]+$} $
0230: 6b 65 79 5d 7d 20 7b 0a 09 73 65 74 20 73 74 61  key]} {..set sta
0240: 74 75 73 20 22 49 6e 76 61 6c 69 64 20 4b 65 79  tus "Invalid Key
0250: 22 0a 09 73 65 74 20 74 65 72 6d 69 6e 61 6c 20  "..set terminal 
0260: 31 0a 0a 09 75 6e 73 65 74 20 6b 65 79 0a 7d 0a  1...unset key.}.
0270: 0a 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  .if {[info exist
0280: 73 20 6b 65 79 5d 7d 20 7b 0a 09 73 65 74 20 77  s key]} {..set w
0290: 6f 72 6b 64 69 72 20 5b 66 69 6c 65 20 6a 6f 69  orkdir [file joi
02a0: 6e 20 24 6f 75 74 64 69 72 20 24 6b 65 79 5d 0a  n $outdir $key].
02b0: 7d 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  }..if {[info exi
02c0: 73 74 73 20 77 6f 72 6b 64 69 72 5d 7d 20 7b 0a  sts workdir]} {.
02d0: 09 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 73 74  .if {[file exist
02e0: 73 20 24 77 6f 72 6b 64 69 72 5d 7d 20 7b 0a 09  s $workdir]} {..
02f0: 09 73 65 74 20 66 64 20 5b 6f 70 65 6e 20 5b 66  .set fd [open [f
0300: 69 6c 65 20 6a 6f 69 6e 20 24 77 6f 72 6b 64 69  ile join $workdi
0310: 72 20 62 75 69 6c 64 69 6e 66 6f 5d 5d 0a 09 09  r buildinfo]]...
0320: 73 65 74 20 62 75 69 6c 64 69 6e 66 6f 5f 6c 69  set buildinfo_li
0330: 73 74 20 5b 67 65 74 73 20 24 66 64 5d 0a 09 09  st [gets $fd]...
0340: 63 6c 6f 73 65 20 24 66 64 0a 09 09 61 72 72 61  close $fd...arra
0350: 79 20 73 65 74 20 62 75 69 6c 64 69 6e 66 6f 20  y set buildinfo 
0360: 24 62 75 69 6c 64 69 6e 66 6f 5f 6c 69 73 74 0a  $buildinfo_list.
0370: 09 09 73 65 74 20 66 69 6c 65 6e 61 6d 65 20 24  ..set filename $
0380: 62 75 69 6c 64 69 6e 66 6f 28 66 69 6c 65 6e 61  buildinfo(filena
0390: 6d 65 29 0a 0a 09 09 73 65 74 20 6f 75 74 66 69  me)....set outfi
03a0: 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 77  le [file join $w
03b0: 6f 72 6b 64 69 72 20 24 66 69 6c 65 6e 61 6d 65  orkdir $filename
03c0: 5d 0a 09 09 73 65 74 20 6c 6f 67 66 69 6c 65 20  ]...set logfile 
03d0: 22 24 7b 6f 75 74 66 69 6c 65 7d 2e 6c 6f 67 22  "${outfile}.log"
03e0: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74  ..} else {...set
03f0: 20 73 74 61 74 75 73 20 22 51 75 65 75 65 64 22   status "Queued"
0400: 0a 09 7d 0a 7d 0a 0a 69 66 20 7b 5b 69 6e 66 6f  ..}.}..if {[info
0410: 20 65 78 69 73 74 73 20 62 75 69 6c 64 69 6e 66   exists buildinf
0420: 6f 5d 7d 20 7b 0a 09 73 65 74 20 64 65 73 63 72  o]} {..set descr
0430: 69 70 74 69 6f 6e 20 22 54 63 6c 20 24 62 75 69  iption "Tcl $bui
0440: 6c 64 69 6e 66 6f 28 74 63 6c 5f 76 65 72 73 69  ldinfo(tcl_versi
0450: 6f 6e 29 22 0a 09 61 70 70 65 6e 64 20 64 65 73  on)"..append des
0460: 63 72 69 70 74 69 6f 6e 20 22 2c 20 4b 69 74 43  cription ", KitC
0470: 72 65 61 74 6f 72 20 24 62 75 69 6c 64 69 6e 66  reator $buildinf
0480: 6f 28 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72  o(kitcreator_ver
0490: 73 69 6f 6e 29 22 0a 09 61 70 70 65 6e 64 20 64  sion)"..append d
04a0: 65 73 63 72 69 70 74 69 6f 6e 20 22 2c 20 50 6c  escription ", Pl
04b0: 61 74 66 6f 72 6d 20 24 62 75 69 6c 64 69 6e 66  atform $buildinf
04c0: 6f 28 70 6c 61 74 66 6f 72 6d 29 22 0a 0a 09 66  o(platform)"...f
04d0: 6f 72 65 61 63 68 20 7b 6f 70 74 69 6f 6e 20 76  oreach {option v
04e0: 61 6c 75 65 7d 20 24 62 75 69 6c 64 69 6e 66 6f  alue} $buildinfo
04f0: 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 09 73 77  (options) {...sw
0500: 69 74 63 68 20 2d 2d 20 24 6f 70 74 69 6f 6e 20  itch -- $option 
0510: 7b 0a 09 09 09 22 6b 69 74 64 6c 6c 22 20 7b 0a  {...."kitdll" {.
0520: 09 09 09 09 69 66 20 7b 24 76 61 6c 75 65 7d 20  ....if {$value} 
0530: 7b 0a 09 09 09 09 09 61 70 70 65 6e 64 20 64 65  {......append de
0540: 73 63 72 69 70 74 69 6f 6e 20 22 2c 20 42 75 69  scription ", Bui
0550: 6c 74 20 61 73 20 61 20 4c 69 62 72 61 72 79 22  lt as a Library"
0560: 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 22  .....}....}...."
0570: 64 79 6e 61 6d 69 63 74 6b 22 20 7b 0a 09 09 09  dynamictk" {....
0580: 09 69 66 20 7b 24 76 61 6c 75 65 7d 20 7b 0a 09  .if {$value} {..
0590: 09 09 09 09 69 66 20 7b 5b 6c 73 65 61 72 63 68  ....if {[lsearch
05a0: 20 2d 65 78 61 63 74 20 24 62 75 69 6c 64 69 6e   -exact $buildin
05b0: 66 6f 28 70 61 63 6b 61 67 65 73 29 20 22 74 6b  fo(packages) "tk
05c0: 22 5d 20 21 3d 20 2d 31 7d 20 7b 0a 09 09 09 09  "] != -1} {.....
05d0: 09 09 61 70 70 65 6e 64 20 64 65 73 63 72 69 70  ..append descrip
05e0: 74 69 6f 6e 20 22 2c 20 46 6f 72 63 65 64 20 54  tion ", Forced T
05f0: 6b 20 44 79 6e 61 6d 69 63 20 4c 69 6e 6b 69 6e  k Dynamic Linkin
0600: 67 22 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a  g"......}.....}.
0610: 09 09 09 7d 0a 09 09 09 22 74 68 72 65 61 64 65  ...}...."threade
0620: 64 22 20 7b 0a 09 09 09 09 69 66 20 7b 24 76 61  d" {.....if {$va
0630: 6c 75 65 7d 20 7b 0a 09 09 09 09 09 61 70 70 65  lue} {......appe
0640: 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 20 22  nd description "
0650: 2c 20 54 68 72 65 61 64 65 64 22 0a 09 09 09 09  , Threaded".....
0660: 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 61 70  } else {......ap
0670: 70 65 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e  pend description
0680: 20 22 2c 20 55 6e 74 68 72 65 61 64 65 64 22 0a   ", Unthreaded".
0690: 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 22 64  ....}....}...."d
06a0: 65 62 75 67 22 20 7b 0a 09 09 09 09 69 66 20 7b  ebug" {.....if {
06b0: 24 76 61 6c 75 65 7d 20 7b 0a 09 09 09 09 09 61  $value} {......a
06c0: 70 70 65 6e 64 20 64 65 73 63 72 69 70 74 69 6f  ppend descriptio
06d0: 6e 20 22 2c 20 57 69 74 68 20 53 79 6d 62 6f 6c  n ", With Symbol
06e0: 73 22 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09  s".....}....}...
06f0: 09 22 6d 69 6e 62 75 69 6c 64 22 20 7b 0a 09 09  ."minbuild" {...
0700: 09 09 69 66 20 7b 24 76 61 6c 75 65 7d 20 7b 0a  ..if {$value} {.
0710: 09 09 09 09 09 61 70 70 65 6e 64 20 64 65 73 63  .....append desc
0720: 72 69 70 74 69 6f 6e 20 22 2c 20 57 69 74 68 6f  ription ", Witho
0730: 75 74 20 54 63 6c 20 70 6b 67 73 2f 20 61 6e 64  ut Tcl pkgs/ and
0740: 20 61 6c 6c 20 65 6e 63 6f 64 69 6e 67 73 22 0a   all encodings".
0750: 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 22 73  ....}....}...."s
0760: 74 61 74 69 63 6c 69 62 73 73 6c 22 20 7b 0a 09  taticlibssl" {..
0770: 09 09 09 69 66 20 7b 24 76 61 6c 75 65 7d 20 7b  ...if {$value} {
0780: 0a 09 09 09 09 09 61 70 70 65 6e 64 20 64 65 73  ......append des
0790: 63 72 69 70 74 69 6f 6e 20 22 2c 20 53 74 61 74  cription ", Stat
07a0: 69 63 61 6c 6c 79 20 6c 69 6e 6b 65 64 20 74 6f  ically linked to
07b0: 20 4c 69 62 53 53 4c 22 0a 09 09 09 09 7d 0a 09   LibSSL".....}..
07c0: 09 09 7d 0a 09 09 09 22 73 74 61 74 69 63 70 6b  ..}...."staticpk
07d0: 67 73 22 20 7b 0a 09 09 09 09 69 66 20 7b 24 76  gs" {.....if {$v
07e0: 61 6c 75 65 7d 20 7b 0a 09 09 09 09 09 61 70 70  alue} {......app
07f0: 65 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 20  end description 
0800: 22 2c 20 57 69 74 68 20 54 63 6c 20 38 2e 36 2b  ", With Tcl 8.6+
0810: 20 70 6b 67 73 2f 20 64 69 72 65 63 74 6f 72 79   pkgs/ directory
0820: 20 61 6c 6c 20 70 61 63 6b 61 67 65 73 20 73 74   all packages st
0830: 61 74 69 63 61 6c 6c 79 20 6c 69 6e 6b 65 64 20  atically linked 
0840: 69 6e 22 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09  in".....}....}..
0850: 09 09 22 73 74 6f 72 61 67 65 22 20 7b 0a 09 09  .."storage" {...
0860: 09 09 73 77 69 74 63 68 20 2d 2d 20 24 76 61 6c  ..switch -- $val
0870: 75 65 20 7b 0a 09 09 09 09 09 22 6d 6b 34 22 20  ue {......"mk4" 
0880: 7b 0a 09 09 09 09 09 09 61 70 70 65 6e 64 20 64  {.......append d
0890: 65 73 63 72 69 70 74 69 6f 6e 20 22 2c 20 4d 65  escription ", Me
08a0: 74 61 6b 69 74 2d 62 61 73 65 64 22 0a 09 09 09  takit-based"....
08b0: 09 09 7d 0a 09 09 09 09 09 22 7a 69 70 22 20 7b  ..}......"zip" {
08c0: 0a 09 09 09 09 09 09 61 70 70 65 6e 64 20 64 65  .......append de
08d0: 73 63 72 69 70 74 69 6f 6e 20 22 2c 20 5a 69 70  scription ", Zip
08e0: 2d 6b 69 74 22 0a 09 09 09 09 09 7d 0a 09 09 09  -kit"......}....
08f0: 09 09 22 63 76 66 73 22 20 7b 0a 09 09 09 09 09  .."cvfs" {......
0900: 09 61 70 70 65 6e 64 20 64 65 73 63 72 69 70 74  .append descript
0910: 69 6f 6e 20 22 2c 20 53 74 61 74 69 63 20 53 74  ion ", Static St
0920: 6f 72 61 67 65 22 0a 09 09 09 09 09 7d 0a 09 09  orage"......}...
0930: 09 09 7d 0a 09 09 09 7d 0a 09 09 7d 0a 09 7d 0a  ..}....}...}..}.
0940: 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24  ..if {[llength $
0950: 62 75 69 6c 64 69 6e 66 6f 28 70 61 63 6b 61 67  buildinfo(packag
0960: 65 73 29 5d 20 3e 20 30 7d 20 7b 0a 09 09 61 70  es)] > 0} {...ap
0970: 70 65 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e  pend description
0980: 20 22 2c 20 50 61 63 6b 61 67 65 73 3a 20 5b 6a   ", Packages: [j
0990: 6f 69 6e 20 24 62 75 69 6c 64 69 6e 66 6f 28 70  oin $buildinfo(p
09a0: 61 63 6b 61 67 65 73 29 20 7b 2c 20 7d 5d 22 0a  ackages) {, }]".
09b0: 09 7d 20 65 6c 73 65 20 7b 0a 09 09 61 70 70 65  .} else {...appe
09c0: 6e 64 20 64 65 73 63 72 69 70 74 69 6f 6e 20 22  nd description "
09d0: 2c 20 4e 6f 20 70 61 63 6b 61 67 65 73 22 0a 09  , No packages"..
09e0: 7d 0a 7d 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 65  }.}..if {[info e
09f0: 78 69 73 74 73 20 6f 75 74 66 69 6c 65 5d 7d 20  xists outfile]} 
0a00: 7b 0a 09 73 65 74 20 62 75 69 6c 64 5f 6c 6f 67  {..set build_log
0a10: 5f 75 72 6c 20 22 24 7b 62 61 73 65 5f 75 72 6c  _url "${base_url
0a20: 7d 2f 24 7b 66 69 6c 65 6e 61 6d 65 7d 2e 6c 6f  }/${filename}.lo
0a30: 67 22 0a 09 69 66 20 7b 5b 66 69 6c 65 20 65 78  g"..if {[file ex
0a40: 69 73 74 73 20 24 6f 75 74 66 69 6c 65 5d 7d 20  ists $outfile]} 
0a50: 7b 0a 09 09 73 65 74 20 73 74 61 74 75 73 20 22  {...set status "
0a60: 43 6f 6d 70 6c 65 74 65 22 0a 09 09 73 65 74 20  Complete"...set 
0a70: 74 65 72 6d 69 6e 61 6c 20 31 0a 0a 09 09 73 65  terminal 1....se
0a80: 74 20 75 72 6c 20 22 24 7b 62 61 73 65 5f 75 72  t url "${base_ur
0a90: 6c 7d 2f 24 66 69 6c 65 6e 61 6d 65 22 0a 09 7d  l}/$filename"..}
0aa0: 20 65 6c 73 65 69 66 20 7b 5b 66 69 6c 65 20 65   elseif {[file e
0ab0: 78 69 73 74 73 20 22 24 7b 6f 75 74 66 69 6c 65  xists "${outfile
0ac0: 7d 2e 62 75 69 6c 64 66 61 69 6c 22 5d 7d 20 7b  }.buildfail"]} {
0ad0: 0a 09 09 73 65 74 20 73 74 61 74 75 73 20 22 46  ...set status "F
0ae0: 61 69 6c 65 64 22 0a 09 09 73 65 74 20 74 65 72  ailed"...set ter
0af0: 6d 69 6e 61 6c 20 31 0a 09 7d 20 65 6c 73 65 20  minal 1..} else 
0b00: 7b 0a 09 09 73 65 74 20 73 74 61 74 75 73 20 22  {...set status "
0b10: 42 75 69 6c 64 69 6e 67 22 0a 09 7d 0a 7d 0a 0a  Building"..}.}..
0b20: 69 66 20 7b 24 72 65 73 75 6c 74 46 6f 72 6d 61  if {$resultForma
0b30: 74 20 69 6e 20 7b 6a 73 6f 6e 20 64 69 63 74 7d  t in {json dict}
0b40: 7d 20 7b 0a 09 73 65 74 20 74 65 72 6d 69 6e 61  } {..set termina
0b50: 6c 42 6f 6f 6c 65 61 6e 20 5b 6c 69 6e 64 65 78  lBoolean [lindex
0b60: 20 7b 66 61 6c 73 65 20 74 72 75 65 7d 20 24 74   {false true} $t
0b70: 65 72 6d 69 6e 61 6c 5d 0a 0a 09 73 65 74 20 72  erminal]...set r
0b80: 65 73 75 6c 74 73 44 69 63 74 20 5b 64 69 63 74  esultsDict [dict
0b90: 20 63 72 65 61 74 65 20 5c 0a 09 09 73 74 61 74   create \...stat
0ba0: 75 73 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77  us [string tolow
0bb0: 65 72 20 24 73 74 61 74 75 73 5d 20 5c 0a 09 09  er $status] \...
0bc0: 74 65 72 6d 69 6e 61 6c 20 24 74 65 72 6d 69 6e  terminal $termin
0bd0: 61 6c 42 6f 6f 6c 65 61 6e 20 5c 0a 09 5d 0a 09  alBoolean \..]..
0be0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 74 6f 6c 6f  if {[string tolo
0bf0: 77 65 72 20 24 73 74 61 74 75 73 5d 20 65 71 20  wer $status] eq 
0c00: 22 63 6f 6d 70 6c 65 74 65 22 7d 20 7b 0a 09 09  "complete"} {...
0c10: 64 69 63 74 20 73 65 74 20 72 65 73 75 6c 74 73  dict set results
0c20: 44 69 63 74 20 6b 69 74 5f 75 72 6c 20 24 75 72  Dict kit_url $ur
0c30: 6c 0a 09 7d 0a 09 69 66 20 7b 5b 73 74 72 69 6e  l..}..if {[strin
0c40: 67 20 74 6f 6c 6f 77 65 72 20 24 73 74 61 74 75  g tolower $statu
0c50: 73 5d 20 69 6e 20 7b 63 6f 6d 70 6c 65 74 65 20  s] in {complete 
0c60: 62 75 69 6c 64 69 6e 67 7d 7d 20 7b 0a 09 09 64  building}} {...d
0c70: 69 63 74 20 73 65 74 20 72 65 73 75 6c 74 73 44  ict set resultsD
0c80: 69 63 74 20 62 75 69 6c 64 5f 6c 6f 67 5f 75 72  ict build_log_ur
0c90: 6c 20 24 62 75 69 6c 64 5f 6c 6f 67 5f 75 72 6c  l $build_log_url
0ca0: 0a 09 7d 0a 7d 0a 0a 73 77 69 74 63 68 20 2d 65  ..}.}..switch -e
0cb0: 78 61 63 74 20 2d 2d 20 24 72 65 73 75 6c 74 46  xact -- $resultF
0cc0: 6f 72 6d 61 74 20 7b 0a 09 22 68 74 6d 6c 22 20  ormat {.."html" 
0cd0: 7b 0a 09 09 23 20 48 61 6e 64 6c 65 64 20 62 65  {...# Handled be
0ce0: 6c 6f 77 0a 09 7d 0a 09 22 6a 73 6f 6e 22 20 7b  low..}.."json" {
0cf0: 0a 09 09 70 75 74 73 20 22 43 6f 6e 74 65 6e 74  ...puts "Content
0d00: 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69  -Type: applicati
0d10: 6f 6e 2f 6a 73 6f 6e 22 0a 09 09 70 75 74 73 20  on/json"...puts 
0d20: 22 22 0a 09 09 73 65 74 20 72 65 73 75 6c 74 73  ""...set results
0d30: 4a 53 4f 4e 49 74 65 6d 73 20 5b 6c 69 73 74 5d  JSONItems [list]
0d40: 0a 09 09 66 6f 72 65 61 63 68 20 7b 6b 65 79 20  ...foreach {key 
0d50: 76 61 6c 75 65 7d 20 24 72 65 73 75 6c 74 73 44  value} $resultsD
0d60: 69 63 74 20 7b 0a 09 09 09 73 77 69 74 63 68 20  ict {....switch 
0d70: 2d 65 78 61 63 74 20 2d 2d 20 24 6b 65 79 20 7b  -exact -- $key {
0d80: 0a 09 09 09 09 22 74 65 72 6d 69 6e 61 6c 22 20  ....."terminal" 
0d90: 7b 0a 09 09 09 09 7d 0a 09 09 09 09 64 65 66 61  {.....}.....defa
0da0: 75 6c 74 20 7b 0a 09 09 09 09 09 73 65 74 20 76  ult {......set v
0db0: 61 6c 75 65 20 22 5c 22 24 76 61 6c 75 65 5c 22  alue "\"$value\"
0dc0: 22 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09  ".....}....}....
0dd0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 73 4a  lappend resultsJ
0de0: 53 4f 4e 49 74 65 6d 73 20 22 5c 22 24 6b 65 79  SONItems "\"$key
0df0: 5c 22 3a 20 24 76 61 6c 75 65 22 0a 09 09 7d 0a  \": $value"...}.
0e00: 09 09 73 65 74 20 72 65 73 75 6c 74 73 4a 53 4f  ..set resultsJSO
0e10: 4e 20 22 7b 5b 6a 6f 69 6e 20 24 72 65 73 75 6c  N "{[join $resul
0e20: 74 73 4a 53 4f 4e 49 74 65 6d 73 20 7b 2c 20 7d  tsJSONItems {, }
0e30: 5d 7d 22 0a 09 09 70 75 74 73 20 24 72 65 73 75  ]}"...puts $resu
0e40: 6c 74 73 4a 53 4f 4e 0a 09 09 65 78 69 74 20 30  ltsJSON...exit 0
0e50: 0a 09 7d 0a 09 22 64 69 63 74 22 20 7b 0a 09 09  ..}.."dict" {...
0e60: 70 75 74 73 20 22 43 6f 6e 74 65 6e 74 2d 54 79  puts "Content-Ty
0e70: 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 22 0a  pe: text/plain".
0e80: 09 09 70 75 74 73 20 22 22 0a 09 09 70 75 74 73  ..puts ""...puts
0e90: 20 24 72 65 73 75 6c 74 73 44 69 63 74 0a 09 09   $resultsDict...
0ea0: 65 78 69 74 20 30 0a 09 7d 0a 09 64 65 66 61 75  exit 0..}..defau
0eb0: 6c 74 20 7b 0a 09 09 65 78 69 74 20 31 0a 09 7d  lt {...exit 1..}
0ec0: 0a 7d 0a 0a 70 75 74 73 20 22 43 6f 6e 74 65 6e  .}..puts "Conten
0ed0: 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d  t-Type: text/htm
0ee0: 6c 22 0a 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  l".if {[info exi
0ef0: 73 74 73 20 75 72 6c 5d 7d 20 7b 0a 09 23 20 55  sts url]} {..# U
0f00: 73 65 20 61 20 72 65 66 72 65 73 68 20 68 65 72  se a refresh her
0f10: 65 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 22  e instead of a "
0f20: 4c 6f 63 61 74 69 6f 6e 22 20 73 6f 20 74 68 61  Location" so tha
0f30: 74 0a 09 23 20 74 68 65 20 63 6c 69 65 6e 74 20  t..# the client 
0f40: 63 61 6e 20 73 65 65 20 74 68 65 20 70 61 67 65  can see the page
0f50: 0a 09 70 75 74 73 20 22 52 65 66 72 65 73 68 3a  ..puts "Refresh:
0f60: 20 30 3b 75 72 6c 3d 24 75 72 6c 22 0a 7d 20 65   0;url=$url".} e
0f70: 6c 73 65 20 7b 0a 09 69 66 20 7b 21 24 74 65 72  lse {..if {!$ter
0f80: 6d 69 6e 61 6c 7d 20 7b 0a 09 09 70 75 74 73 20  minal} {...puts 
0f90: 22 52 65 66 72 65 73 68 3a 20 33 30 3b 75 72 6c  "Refresh: 30;url
0fa0: 3d 2e 22 0a 09 7d 0a 7d 0a 70 75 74 73 20 22 22  =."..}.}.puts ""
0fb0: 0a 70 75 74 73 20 22 3c 68 74 6d 6c 3e 22 0a 70  .puts "<html>".p
0fc0: 75 74 73 20 22 5c 74 3c 68 65 61 64 3e 22 0a 70  uts "\t<head>".p
0fd0: 75 74 73 20 22 5c 74 5c 74 3c 74 69 74 6c 65 3e  uts "\t\t<title>
0fe0: 4b 69 74 43 72 65 61 74 6f 72 2c 20 57 65 62 20  KitCreator, Web 
0ff0: 49 6e 74 65 72 66 61 63 65 3c 2f 74 69 74 6c 65  Interface</title
1000: 3e 22 0a 70 75 74 73 20 22 5c 74 3c 2f 68 65 61  >".puts "\t</hea
1010: 64 3e 22 0a 70 75 74 73 20 22 5c 74 3c 62 6f 64  d>".puts "\t<bod
1020: 79 3e 22 0a 70 75 74 73 20 22 5c 74 5c 74 3c 68  y>".puts "\t\t<h
1030: 31 3e 4b 69 74 43 72 65 61 74 6f 72 20 57 65 62  1>KitCreator Web
1040: 20 49 6e 74 65 72 66 61 63 65 3c 2f 68 31 3e 22   Interface</h1>"
1050: 0a 70 75 74 73 20 22 5c 74 5c 74 3c 70 3e 3c 62  .puts "\t\t<p><b
1060: 3e 53 74 61 74 75 73 3a 3c 2f 62 3e 20 24 73 74  >Status:</b> $st
1070: 61 74 75 73 22 0a 69 66 20 7b 5b 69 6e 66 6f 20  atus".if {[info 
1080: 65 78 69 73 74 73 20 75 72 6c 5d 7d 20 7b 0a 09  exists url]} {..
1090: 70 75 74 73 20 22 5c 74 5c 74 3c 70 3e 3c 62 3e  puts "\t\t<p><b>
10a0: 55 52 4c 3a 3c 2f 62 3e 20 3c 61 20 68 72 65 66  URL:</b> <a href
10b0: 3d 5c 22 24 75 72 6c 5c 22 3e 24 75 72 6c 3c 2f  =\"$url\">$url</
10c0: 61 3e 22 0a 7d 0a 69 66 20 7b 5b 69 6e 66 6f 20  a>".}.if {[info 
10d0: 65 78 69 73 74 73 20 64 65 73 63 72 69 70 74 69  exists descripti
10e0: 6f 6e 5d 7d 20 7b 0a 09 70 75 74 73 20 22 5c 74  on]} {..puts "\t
10f0: 5c 74 3c 70 3e 3c 62 3e 44 65 73 63 72 69 70 74  \t<p><b>Descript
1100: 69 6f 6e 3a 3c 2f 62 3e 20 24 64 65 73 63 72 69  ion:</b> $descri
1110: 70 74 69 6f 6e 22 0a 7d 0a 69 66 20 7b 5b 69 6e  ption".}.if {[in
1120: 66 6f 20 65 78 69 73 74 73 20 6c 6f 67 66 69 6c  fo exists logfil
1130: 65 5d 7d 20 7b 0a 09 63 61 74 63 68 20 7b 0a 09  e]} {..catch {..
1140: 09 73 65 74 20 66 64 20 5b 6f 70 65 6e 20 24 6c  .set fd [open $l
1150: 6f 67 66 69 6c 65 5d 0a 09 09 73 65 74 20 6c 6f  ogfile]...set lo
1160: 67 64 61 74 61 20 5b 72 65 61 64 20 24 66 64 5d  gdata [read $fd]
1170: 0a 09 09 63 6c 6f 73 65 20 24 66 64 0a 0a 0a 09  ...close $fd....
1180: 09 70 75 74 73 20 22 5c 74 5c 74 3c 70 3e 3c 62  .puts "\t\t<p><b
1190: 3e 4c 6f 67 3a 3c 2f 62 3e 3c 70 72 65 3e 5c 6e  >Log:</b><pre>\n
11a0: 24 6c 6f 67 64 61 74 61 3c 2f 70 72 65 3e 22 0a  $logdata</pre>".
11b0: 09 7d 0a 7d 0a 70 75 74 73 20 22 5c 74 3c 2f 62  .}.}.puts "\t</b
11c0: 6f 64 79 3e 22 0a 70 75 74 73 20 22 3c 2f 68 74  ody>".puts "</ht
11d0: 6d 6c 3e 22 0a                                   ml>".