Hex Artifact Content

Artifact 9e4625490c4568804c994b0fe26767b3ead672f5:


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 09  l}/$filename"...
0aa0: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
0ab0: 20 62 75 69 6c 64 69 6e 66 6f 28 73 64 6b 66 69   buildinfo(sdkfi
0ac0: 6c 65 6e 61 6d 65 29 5d 7d 20 7b 0a 09 09 09 73  lename)]} {....s
0ad0: 65 74 20 73 64 6b 5f 75 72 6c 20 22 24 7b 62 61  et sdk_url "${ba
0ae0: 73 65 5f 75 72 6c 7d 2f 24 62 75 69 6c 64 69 6e  se_url}/$buildin
0af0: 66 6f 28 73 64 6b 66 69 6c 65 6e 61 6d 65 29 22  fo(sdkfilename)"
0b00: 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 69 66 20 7b  ...}..} elseif {
0b10: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 22 24 7b  [file exists "${
0b20: 6f 75 74 66 69 6c 65 7d 2e 62 75 69 6c 64 66 61  outfile}.buildfa
0b30: 69 6c 22 5d 7d 20 7b 0a 09 09 73 65 74 20 73 74  il"]} {...set st
0b40: 61 74 75 73 20 22 46 61 69 6c 65 64 22 0a 09 09  atus "Failed"...
0b50: 73 65 74 20 74 65 72 6d 69 6e 61 6c 20 31 0a 09  set terminal 1..
0b60: 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 73  } else {...set s
0b70: 74 61 74 75 73 20 22 42 75 69 6c 64 69 6e 67 22  tatus "Building"
0b80: 0a 09 7d 0a 7d 0a 0a 69 66 20 7b 24 72 65 73 75  ..}.}..if {$resu
0b90: 6c 74 46 6f 72 6d 61 74 20 69 6e 20 7b 6a 73 6f  ltFormat in {jso
0ba0: 6e 20 64 69 63 74 7d 7d 20 7b 0a 09 73 65 74 20  n dict}} {..set 
0bb0: 74 65 72 6d 69 6e 61 6c 42 6f 6f 6c 65 61 6e 20  terminalBoolean 
0bc0: 5b 6c 69 6e 64 65 78 20 7b 66 61 6c 73 65 20 74  [lindex {false t
0bd0: 72 75 65 7d 20 24 74 65 72 6d 69 6e 61 6c 5d 0a  rue} $terminal].
0be0: 0a 09 73 65 74 20 72 65 73 75 6c 74 73 44 69 63  ..set resultsDic
0bf0: 74 20 5b 64 69 63 74 20 63 72 65 61 74 65 20 5c  t [dict create \
0c00: 0a 09 09 73 74 61 74 75 73 20 5b 73 74 72 69 6e  ...status [strin
0c10: 67 20 74 6f 6c 6f 77 65 72 20 24 73 74 61 74 75  g tolower $statu
0c20: 73 5d 20 5c 0a 09 09 74 65 72 6d 69 6e 61 6c 20  s] \...terminal 
0c30: 24 74 65 72 6d 69 6e 61 6c 42 6f 6f 6c 65 61 6e  $terminalBoolean
0c40: 20 5c 0a 09 5d 0a 09 69 66 20 7b 5b 73 74 72 69   \..]..if {[stri
0c50: 6e 67 20 74 6f 6c 6f 77 65 72 20 24 73 74 61 74  ng tolower $stat
0c60: 75 73 5d 20 65 71 20 22 63 6f 6d 70 6c 65 74 65  us] eq "complete
0c70: 22 7d 20 7b 0a 09 09 64 69 63 74 20 73 65 74 20  "} {...dict set 
0c80: 72 65 73 75 6c 74 73 44 69 63 74 20 6b 69 74 5f  resultsDict kit_
0c90: 75 72 6c 20 24 75 72 6c 0a 0a 09 09 69 66 20 7b  url $url....if {
0ca0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 64 6b  [info exists sdk
0cb0: 5f 75 72 6c 5d 7d 20 7b 0a 09 09 09 64 69 63 74  _url]} {....dict
0cc0: 20 73 65 74 20 72 65 73 75 6c 74 73 44 69 63 74   set resultsDict
0cd0: 20 6b 69 74 5f 73 64 6b 5f 75 72 6c 20 24 73 64   kit_sdk_url $sd
0ce0: 6b 5f 75 72 6c 0a 09 09 7d 0a 09 7d 0a 09 69 66  k_url...}..}..if
0cf0: 20 7b 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65   {[string tolowe
0d00: 72 20 24 73 74 61 74 75 73 5d 20 69 6e 20 7b 63  r $status] in {c
0d10: 6f 6d 70 6c 65 74 65 20 62 75 69 6c 64 69 6e 67  omplete building
0d20: 20 66 61 69 6c 65 64 7d 7d 20 7b 0a 09 09 64 69   failed}} {...di
0d30: 63 74 20 73 65 74 20 72 65 73 75 6c 74 73 44 69  ct set resultsDi
0d40: 63 74 20 62 75 69 6c 64 5f 6c 6f 67 5f 75 72 6c  ct build_log_url
0d50: 20 24 62 75 69 6c 64 5f 6c 6f 67 5f 75 72 6c 0a   $build_log_url.
0d60: 09 09 63 61 74 63 68 20 7b 0a 09 09 09 64 69 63  ..catch {....dic
0d70: 74 20 73 65 74 20 72 65 73 75 6c 74 73 44 69 63  t set resultsDic
0d80: 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 20 24 62  t tcl_version $b
0d90: 75 69 6c 64 69 6e 66 6f 28 74 63 6c 5f 76 65 72  uildinfo(tcl_ver
0da0: 73 69 6f 6e 29 0a 09 09 7d 0a 09 09 63 61 74 63  sion)...}...catc
0db0: 68 20 7b 0a 09 09 09 64 69 63 74 20 73 65 74 20  h {....dict set 
0dc0: 72 65 73 75 6c 74 73 44 69 63 74 20 6b 69 74 63  resultsDict kitc
0dd0: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 24  reator_version $
0de0: 62 75 69 6c 64 69 6e 66 6f 28 6b 69 74 63 72 65  buildinfo(kitcre
0df0: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 29 0a 09 09  ator_version)...
0e00: 7d 0a 09 09 63 61 74 63 68 20 7b 0a 09 09 09 64  }...catch {....d
0e10: 69 63 74 20 73 65 74 20 72 65 73 75 6c 74 73 44  ict set resultsD
0e20: 69 63 74 20 70 6c 61 74 66 6f 72 6d 20 24 62 75  ict platform $bu
0e30: 69 6c 64 69 6e 66 6f 28 70 6c 61 74 66 6f 72 6d  ildinfo(platform
0e40: 29 0a 09 09 7d 0a 09 7d 0a 7d 0a 0a 73 77 69 74  )...}..}.}..swit
0e50: 63 68 20 2d 65 78 61 63 74 20 2d 2d 20 24 72 65  ch -exact -- $re
0e60: 73 75 6c 74 46 6f 72 6d 61 74 20 7b 0a 09 22 68  sultFormat {.."h
0e70: 74 6d 6c 22 20 7b 0a 09 09 23 20 48 61 6e 64 6c  tml" {...# Handl
0e80: 65 64 20 62 65 6c 6f 77 0a 09 7d 0a 09 22 6a 73  ed below..}.."js
0e90: 6f 6e 22 20 7b 0a 09 09 70 75 74 73 20 22 43 6f  on" {...puts "Co
0ea0: 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c  ntent-Type: appl
0eb0: 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 0a 09 09  ication/json"...
0ec0: 70 75 74 73 20 22 22 0a 09 09 73 65 74 20 72 65  puts ""...set re
0ed0: 73 75 6c 74 73 4a 53 4f 4e 49 74 65 6d 73 20 5b  sultsJSONItems [
0ee0: 6c 69 73 74 5d 0a 09 09 66 6f 72 65 61 63 68 20  list]...foreach 
0ef0: 7b 6b 65 79 20 76 61 6c 75 65 7d 20 24 72 65 73  {key value} $res
0f00: 75 6c 74 73 44 69 63 74 20 7b 0a 09 09 09 73 77  ultsDict {....sw
0f10: 69 74 63 68 20 2d 65 78 61 63 74 20 2d 2d 20 24  itch -exact -- $
0f20: 6b 65 79 20 7b 0a 09 09 09 09 22 74 65 72 6d 69  key {....."termi
0f30: 6e 61 6c 22 20 7b 0a 09 09 09 09 7d 0a 09 09 09  nal" {.....}....
0f40: 09 64 65 66 61 75 6c 74 20 7b 0a 09 09 09 09 09  .default {......
0f50: 73 65 74 20 76 61 6c 75 65 20 22 5c 22 24 76 61  set value "\"$va
0f60: 6c 75 65 5c 22 22 0a 09 09 09 09 7d 0a 09 09 09  lue\"".....}....
0f70: 7d 0a 09 09 09 6c 61 70 70 65 6e 64 20 72 65 73  }....lappend res
0f80: 75 6c 74 73 4a 53 4f 4e 49 74 65 6d 73 20 22 5c  ultsJSONItems "\
0f90: 22 24 6b 65 79 5c 22 3a 20 24 76 61 6c 75 65 22  "$key\": $value"
0fa0: 0a 09 09 7d 0a 09 09 73 65 74 20 72 65 73 75 6c  ...}...set resul
0fb0: 74 73 4a 53 4f 4e 20 22 7b 5b 6a 6f 69 6e 20 24  tsJSON "{[join $
0fc0: 72 65 73 75 6c 74 73 4a 53 4f 4e 49 74 65 6d 73  resultsJSONItems
0fd0: 20 7b 2c 20 7d 5d 7d 22 0a 09 09 70 75 74 73 20   {, }]}"...puts 
0fe0: 24 72 65 73 75 6c 74 73 4a 53 4f 4e 0a 09 09 65  $resultsJSON...e
0ff0: 78 69 74 20 30 0a 09 7d 0a 09 22 64 69 63 74 22  xit 0..}.."dict"
1000: 20 7b 0a 09 09 70 75 74 73 20 22 43 6f 6e 74 65   {...puts "Conte
1010: 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c  nt-Type: text/pl
1020: 61 69 6e 22 0a 09 09 70 75 74 73 20 22 22 0a 09  ain"...puts ""..
1030: 09 70 75 74 73 20 24 72 65 73 75 6c 74 73 44 69  .puts $resultsDi
1040: 63 74 0a 09 09 65 78 69 74 20 30 0a 09 7d 0a 09  ct...exit 0..}..
1050: 64 65 66 61 75 6c 74 20 7b 0a 09 09 65 78 69 74  default {...exit
1060: 20 31 0a 09 7d 0a 7d 0a 0a 70 75 74 73 20 22 43   1..}.}..puts "C
1070: 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78  ontent-Type: tex
1080: 74 2f 68 74 6d 6c 22 0a 69 66 20 7b 5b 69 6e 66  t/html".if {[inf
1090: 6f 20 65 78 69 73 74 73 20 75 72 6c 5d 7d 20 7b  o exists url]} {
10a0: 0a 09 23 20 55 73 65 20 61 20 72 65 66 72 65 73  ..# Use a refres
10b0: 68 20 68 65 72 65 20 69 6e 73 74 65 61 64 20 6f  h here instead o
10c0: 66 20 61 20 22 4c 6f 63 61 74 69 6f 6e 22 20 73  f a "Location" s
10d0: 6f 20 74 68 61 74 0a 09 23 20 74 68 65 20 63 6c  o that..# the cl
10e0: 69 65 6e 74 20 63 61 6e 20 73 65 65 20 74 68 65  ient can see the
10f0: 20 70 61 67 65 0a 09 70 75 74 73 20 22 52 65 66   page..puts "Ref
1100: 72 65 73 68 3a 20 30 3b 75 72 6c 3d 24 75 72 6c  resh: 0;url=$url
1110: 22 0a 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b  ".} else {..if {
1120: 21 24 74 65 72 6d 69 6e 61 6c 7d 20 7b 0a 09 09  !$terminal} {...
1130: 70 75 74 73 20 22 52 65 66 72 65 73 68 3a 20 33  puts "Refresh: 3
1140: 30 3b 75 72 6c 3d 2e 22 0a 09 7d 0a 7d 0a 70 75  0;url=."..}.}.pu
1150: 74 73 20 22 22 0a 70 75 74 73 20 22 3c 68 74 6d  ts "".puts "<htm
1160: 6c 3e 22 0a 70 75 74 73 20 22 5c 74 3c 68 65 61  l>".puts "\t<hea
1170: 64 3e 22 0a 70 75 74 73 20 22 5c 74 5c 74 3c 74  d>".puts "\t\t<t
1180: 69 74 6c 65 3e 4b 69 74 43 72 65 61 74 6f 72 2c  itle>KitCreator,
1190: 20 57 65 62 20 49 6e 74 65 72 66 61 63 65 3c 2f   Web Interface</
11a0: 74 69 74 6c 65 3e 22 0a 70 75 74 73 20 22 5c 74  title>".puts "\t
11b0: 3c 2f 68 65 61 64 3e 22 0a 70 75 74 73 20 22 5c  </head>".puts "\
11c0: 74 3c 62 6f 64 79 3e 22 0a 70 75 74 73 20 22 5c  t<body>".puts "\
11d0: 74 5c 74 3c 68 31 3e 4b 69 74 43 72 65 61 74 6f  t\t<h1>KitCreato
11e0: 72 20 57 65 62 20 49 6e 74 65 72 66 61 63 65 3c  r Web Interface<
11f0: 2f 68 31 3e 22 0a 70 75 74 73 20 22 5c 74 5c 74  /h1>".puts "\t\t
1200: 3c 70 3e 3c 62 3e 53 74 61 74 75 73 3a 3c 2f 62  <p><b>Status:</b
1210: 3e 20 24 73 74 61 74 75 73 22 0a 69 66 20 7b 5b  > $status".if {[
1220: 69 6e 66 6f 20 65 78 69 73 74 73 20 75 72 6c 5d  info exists url]
1230: 7d 20 7b 0a 09 70 75 74 73 20 22 5c 74 5c 74 3c  } {..puts "\t\t<
1240: 70 3e 3c 62 3e 55 52 4c 3a 3c 2f 62 3e 20 3c 61  p><b>URL:</b> <a
1250: 20 68 72 65 66 3d 5c 22 24 75 72 6c 5c 22 3e 24   href=\"$url\">$
1260: 75 72 6c 3c 2f 61 3e 22 0a 7d 0a 69 66 20 7b 5b  url</a>".}.if {[
1270: 69 6e 66 6f 20 65 78 69 73 74 73 20 64 65 73 63  info exists desc
1280: 72 69 70 74 69 6f 6e 5d 7d 20 7b 0a 09 70 75 74  ription]} {..put
1290: 73 20 22 5c 74 5c 74 3c 70 3e 3c 62 3e 44 65 73  s "\t\t<p><b>Des
12a0: 63 72 69 70 74 69 6f 6e 3a 3c 2f 62 3e 20 24 64  cription:</b> $d
12b0: 65 73 63 72 69 70 74 69 6f 6e 22 0a 7d 0a 69 66  escription".}.if
12c0: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6c   {[info exists l
12d0: 6f 67 66 69 6c 65 5d 7d 20 7b 0a 09 63 61 74 63  ogfile]} {..catc
12e0: 68 20 7b 0a 09 09 73 65 74 20 66 64 20 5b 6f 70  h {...set fd [op
12f0: 65 6e 20 24 6c 6f 67 66 69 6c 65 5d 0a 09 09 73  en $logfile]...s
1300: 65 74 20 6c 6f 67 64 61 74 61 20 5b 72 65 61 64  et logdata [read
1310: 20 24 66 64 5d 0a 09 09 63 6c 6f 73 65 20 24 66   $fd]...close $f
1320: 64 0a 0a 0a 09 09 70 75 74 73 20 22 5c 74 5c 74  d.....puts "\t\t
1330: 3c 70 3e 3c 62 3e 4c 6f 67 3a 3c 2f 62 3e 3c 70  <p><b>Log:</b><p
1340: 72 65 3e 5c 6e 24 6c 6f 67 64 61 74 61 3c 2f 70  re>\n$logdata</p
1350: 72 65 3e 22 0a 09 7d 0a 7d 0a 70 75 74 73 20 22  re>"..}.}.puts "
1360: 5c 74 3c 2f 62 6f 64 79 3e 22 0a 70 75 74 73 20  \t</body>".puts 
1370: 22 3c 2f 68 74 6d 6c 3e 22 0a                    "</html>".