Hex Artifact Content

Artifact 67b5085a359e213091cb0faeb2813a3d35b1bc01:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 62 61 73 68 0a 0a 23 20 44 65 66 69 6e 65 20 65  bash..# Define e
0020: 6e 64 70 6f 69 6e 74 0a 65 6e 64 70 6f 69 6e 74  ndpoint.endpoint
0030: 5f 75 72 6c 3d 22 68 74 74 70 73 3a 2f 2f 6b 69  _url="https://ki
0040: 74 63 72 65 61 74 6f 72 2e 72 6b 65 65 6e 65 2e  tcreator.rkeene.
0050: 6f 72 67 2f 6b 69 74 63 72 65 61 74 6f 72 22 0a  org/kitcreator".
0060: 0a 23 20 48 65 6c 70 0a 66 75 6e 63 74 69 6f 6e  .# Help.function
0070: 20 70 72 69 6e 74 5f 68 65 6c 70 28 29 20 7b 0a   print_help() {.
0080: 09 65 63 68 6f 20 27 64 6f 77 6e 6c 6f 61 64 2d  .echo 'download-
0090: 61 70 69 2d 63 6c 69 65 6e 74 20 5b 2d 2d 70 6c  api-client [--pl
00a0: 61 74 66 6f 72 6d 20 3c 70 6c 61 74 66 6f 72 6d  atform <platform
00b0: 3e 5d 20 5b 2d 2d 74 63 6c 2d 76 65 72 73 69 6f  >] [--tcl-versio
00c0: 6e 20 3c 76 65 72 73 69 6f 6e 3e 5d 27 0a 09 65  n <version>]'..e
00d0: 63 68 6f 20 27 20 20 20 20 20 20 20 20 20 20 20  cho '           
00e0: 20 20 20 20 20 20 20 20 20 5b 2d 2d 6b 69 74 63           [--kitc
00f0: 72 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e 20 3c  reator-version <
0100: 76 65 72 73 69 6f 6e 3e 5d 20 5b 2d 2d 6b 69 74  version>] [--kit
0110: 64 6c 6c 5d 27 0a 09 65 63 68 6f 20 27 20 20 20  dll]'..echo '   
0120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0130: 20 5b 2d 2d 74 68 72 65 61 64 65 64 5d 20 5b 2d   [--threaded] [-
0140: 2d 64 65 62 75 67 5d 20 5b 2d 2d 64 79 6e 61 6d  -debug] [--dynam
0150: 69 63 74 6b 5d 27 0a 09 65 63 68 6f 20 27 20 20  ictk]'..echo '  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 20 20 5b 2d 2d 73 74 61 74 69 63 70 6b 67 73 5d    [--staticpkgs]
0180: 20 5b 2d 2d 76 65 72 62 6f 73 65 5d 27 0a 09 65   [--verbose]'..e
0190: 63 68 6f 20 27 64 6f 77 6e 6c 6f 61 64 2d 61 70  cho 'download-ap
01a0: 69 2d 63 6c 69 65 6e 74 20 7b 2d 2d 68 65 6c 70  i-client {--help
01b0: 7c 2d 2d 70 6c 61 74 66 6f 72 6d 73 7c 2d 2d 74  |--platforms|--t
01c0: 63 6c 2d 76 65 72 73 69 6f 6e 73 7c 27 0a 09 65  cl-versions|'..e
01d0: 63 68 6f 20 27 20 20 20 20 20 20 20 20 20 20 20  cho '           
01e0: 20 20 20 20 20 20 20 20 20 20 2d 2d 6b 69 74 63            --kitc
01f0: 72 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e 73 7c  reator-versions|
0200: 2d 2d 70 61 63 6b 61 67 65 73 7d 27 0a 7d 0a 0a  --packages}'.}..
0210: 23 20 53 65 74 20 61 72 67 75 6d 65 6e 74 73 0a  # Set arguments.
0220: 64 65 63 6c 61 72 65 20 2d 41 20 6a 73 6f 6e 41  declare -A jsonA
0230: 72 67 73 0a 6a 73 6f 6e 41 72 67 73 5b 22 70 6c  rgs.jsonArgs["pl
0240: 61 74 66 6f 72 6d 22 5d 3d 22 24 28 75 6e 61 6d  atform"]="$(unam
0250: 65 20 2d 73 29 2d 24 28 75 6e 61 6d 65 20 2d 6d  e -s)-$(uname -m
0260: 29 22 0a 0a 6e 65 78 74 41 72 67 3d 27 27 0a 6b  )"..nextArg=''.k
0270: 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 27 27 0a 6f  it_filename=''.o
0280: 70 74 69 6f 6e 73 3d 28 29 0a 70 61 63 6b 61 67  ptions=().packag
0290: 65 73 3d 28 29 0a 69 6e 74 65 72 6e 61 6c 4f 70  es=().internalOp
02a0: 74 69 6f 6e 73 56 65 72 62 6f 73 65 3d 27 66 61  tionsVerbose='fa
02b0: 6c 73 65 27 0a 66 6f 72 20 61 72 67 20 69 6e 20  lse'.for arg in 
02c0: 22 24 40 22 3b 20 64 6f 0a 09 69 66 20 5b 20 2d  "$@"; do..if [ -
02d0: 6e 20 22 24 7b 6e 65 78 74 41 72 67 7d 22 20 5d  n "${nextArg}" ]
02e0: 3b 20 74 68 65 6e 0a 09 09 6a 73 6f 6e 41 72 67  ; then...jsonArg
02f0: 73 5b 22 24 7b 6e 65 78 74 41 72 67 7d 22 5d 3d  s["${nextArg}"]=
0300: 22 24 7b 61 72 67 7d 22 0a 09 09 6e 65 78 74 41  "${arg}"...nextA
0310: 72 67 3d 27 27 0a 09 09 63 6f 6e 74 69 6e 75 65  rg=''...continue
0320: 0a 09 66 69 0a 0a 09 63 61 73 65 20 22 24 7b 61  ..fi...case "${a
0330: 72 67 7d 22 20 69 6e 0a 09 09 2d 2d 76 65 72 62  rg}" in...--verb
0340: 6f 73 65 29 0a 09 09 09 69 6e 74 65 72 6e 61 6c  ose)....internal
0350: 4f 70 74 69 6f 6e 73 56 65 72 62 6f 73 65 3d 27  OptionsVerbose='
0360: 74 72 75 65 27 0a 09 09 09 3b 3b 0a 09 09 2d 2d  true'....;;...--
0370: 70 6c 61 74 66 6f 72 6d 7c 2d 2d 74 63 6c 2d 76  platform|--tcl-v
0380: 65 72 73 69 6f 6e 7c 2d 2d 6b 69 74 63 72 65 61  ersion|--kitcrea
0390: 74 6f 72 2d 76 65 72 73 69 6f 6e 29 0a 09 09 09  tor-version)....
03a0: 6e 65 78 74 41 72 67 3d 22 24 7b 61 72 67 3a 32  nextArg="${arg:2
03b0: 7d 22 0a 09 09 09 6e 65 78 74 41 72 67 3d 22 24  }"....nextArg="$
03c0: 7b 6e 65 78 74 41 72 67 2f 2f 2d 2f 5f 7d 22 0a  {nextArg//-/_}".
03d0: 09 09 09 3b 3b 0a 09 09 2d 2d 6b 69 74 64 6c 6c  ...;;...--kitdll
03e0: 7c 2d 2d 74 68 72 65 61 64 65 64 7c 2d 2d 64 65  |--threaded|--de
03f0: 62 75 67 7c 2d 2d 64 79 6e 61 6d 69 63 74 6b 7c  bug|--dynamictk|
0400: 2d 2d 73 74 61 74 69 63 70 6b 67 73 29 0a 09 09  --staticpkgs)...
0410: 09 6f 70 74 69 6f 6e 73 2b 3d 28 22 24 7b 61 72  .options+=("${ar
0420: 67 3a 32 7d 22 29 0a 09 09 09 3b 3b 0a 09 09 2d  g:2}")....;;...-
0430: 2d 6d 6b 34 74 63 6c 7c 2d 2d 74 63 63 34 74 63  -mk4tcl|--tcc4tc
0440: 6c 7c 2d 2d 74 63 6c 63 75 72 6c 7c 2d 2d 74 6b  l|--tclcurl|--tk
0450: 7c 2d 2d 74 6c 73 7c 2d 2d 74 75 61 70 69 7c 2d  |--tls|--tuapi|-
0460: 2d 69 74 63 6c 7c 2d 2d 64 75 6b 74 61 70 65 7c  -itcl|--duktape|
0470: 2d 2d 6c 6d 64 62 7c 2d 2d 75 64 70 29 0a 09 09  --lmdb|--udp)...
0480: 09 70 61 63 6b 61 67 65 73 2b 3d 28 22 24 7b 61  .packages+=("${a
0490: 72 67 3a 32 7d 22 29 0a 09 09 09 3b 3b 0a 09 09  rg:2}")....;;...
04a0: 2d 2d 70 6c 61 74 66 6f 72 6d 73 7c 2d 2d 74 63  --platforms|--tc
04b0: 6c 2d 76 65 72 73 69 6f 6e 73 7c 2d 2d 6b 69 74  l-versions|--kit
04c0: 63 72 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e 73  creator-versions
04d0: 7c 2d 2d 70 61 63 6b 61 67 65 73 7c 2d 2d 6f 70  |--packages|--op
04e0: 74 69 6f 6e 73 29 0a 09 09 09 61 63 74 69 6f 6e  tions)....action
04f0: 3d 22 24 7b 61 72 67 3a 32 7d 22 0a 09 09 09 61  ="${arg:2}"....a
0500: 63 74 69 6f 6e 3d 22 24 7b 61 63 74 69 6f 6e 2f  ction="${action/
0510: 2f 2d 2f 5f 7d 22 0a 0a 09 09 09 66 6f 72 6d 61  /-/_}".....forma
0520: 74 53 74 72 69 6e 67 3d 27 25 2d 32 30 73 20 7c  tString='%-20s |
0530: 20 25 73 5c 6e 27 0a 09 09 09 70 72 69 6e 74 66   %s\n'....printf
0540: 20 22 24 7b 66 6f 72 6d 61 74 53 74 72 69 6e 67   "${formatString
0550: 7d 22 20 4e 61 6d 65 20 44 65 73 63 72 69 70 74  }" Name Descript
0560: 69 6f 6e 0a 09 09 09 70 72 69 6e 74 66 20 27 25  ion....printf '%
0570: 73 2b 25 73 5c 6e 27 20 2d 2d 2d 2d 2d 2d 2d 2d  s+%s\n' --------
0580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 2d 2d  ------------- --
0590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
05a0: 2d 2d 2d 0a 09 09 09 63 75 72 6c 20 2d 73 53 4c  ---....curl -sSL
05b0: 20 2d 64 20 22 6a 73 6f 6e 3d 7b 5c 22 61 63 74   -d "json={\"act
05c0: 69 6f 6e 5c 22 3a 5c 22 24 7b 61 63 74 69 6f 6e  ion\":\"${action
05d0: 7d 5c 22 7d 22 20 22 24 7b 65 6e 64 70 6f 69 6e  }\"}" "${endpoin
05e0: 74 5f 75 72 6c 7d 22 20 7c 20 6a 71 20 2d 63 72  t_url}" | jq -cr
05f0: 4d 20 27 6b 65 79 73 5b 5d 20 61 73 20 24 6b 20  M 'keys[] as $k 
0600: 7c 20 22 5c 28 24 6b 29 20 5c 28 2e 5b 24 6b 5d  | "\($k) \(.[$k]
0610: 29 22 27 20 7c 20 77 68 69 6c 65 20 72 65 61 64  )"' | while read
0620: 20 2d 72 20 70 6c 61 74 66 6f 72 6d 20 64 65 73   -r platform des
0630: 63 72 69 70 74 69 6f 6e 3b 20 64 6f 0a 09 09 09  cription; do....
0640: 09 70 72 69 6e 74 66 20 22 24 7b 66 6f 72 6d 61  .printf "${forma
0650: 74 53 74 72 69 6e 67 7d 22 20 22 24 7b 70 6c 61  tString}" "${pla
0660: 74 66 6f 72 6d 7d 22 20 22 24 7b 64 65 73 63 72  tform}" "${descr
0670: 69 70 74 69 6f 6e 7d 22 0a 09 09 09 64 6f 6e 65  iption}"....done
0680: 0a 09 09 09 65 78 69 74 20 30 0a 09 09 09 3b 3b  ....exit 0....;;
0690: 0a 09 09 2d 2d 68 65 6c 70 29 0a 09 09 09 70 72  ...--help)....pr
06a0: 69 6e 74 5f 68 65 6c 70 0a 09 09 09 65 78 69 74  int_help....exit
06b0: 20 30 0a 09 09 09 3b 3b 0a 09 09 2a 29 0a 09 09   0....;;...*)...
06c0: 09 65 63 68 6f 20 22 49 6e 76 61 6c 69 64 20 6f  .echo "Invalid o
06d0: 70 74 69 6f 6e 20 5c 22 24 7b 61 72 67 7d 5c 22  ption \"${arg}\"
06e0: 22 20 3e 26 32 0a 09 09 09 70 72 69 6e 74 5f 68  " >&2....print_h
06f0: 65 6c 70 20 3e 26 32 0a 09 09 09 65 78 69 74 20  elp >&2....exit 
0700: 31 0a 09 65 73 61 63 0a 64 6f 6e 65 0a 0a 69 66  1..esac.done..if
0710: 20 5b 20 2d 6e 20 22 24 7b 6f 70 74 69 6f 6e 73   [ -n "${options
0720: 5b 2a 5d 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 6a  [*]}" ]; then..j
0730: 73 6f 6e 41 72 67 73 5b 22 6f 70 74 69 6f 6e 73  sonArgs["options
0740: 22 5d 3d 22 24 7b 6f 70 74 69 6f 6e 73 5b 2a 5d  "]="${options[*]
0750: 7d 22 0a 66 69 0a 0a 69 66 20 5b 20 2d 6e 20 22  }".fi..if [ -n "
0760: 24 7b 70 61 63 6b 61 67 65 73 5b 2a 5d 7d 22 20  ${packages[*]}" 
0770: 5d 3b 20 74 68 65 6e 0a 09 6a 73 6f 6e 41 72 67  ]; then..jsonArg
0780: 73 5b 22 70 61 63 6b 61 67 65 73 22 5d 3d 22 24  s["packages"]="$
0790: 7b 70 61 63 6b 61 67 65 73 5b 2a 5d 7d 22 0a 66  {packages[*]}".f
07a0: 69 0a 0a 23 20 43 6f 6e 76 65 72 74 20 61 72 67  i..# Convert arg
07b0: 75 6d 65 6e 74 73 20 69 6e 74 6f 20 61 20 72 65  uments into a re
07c0: 71 75 65 73 74 0a 6a 71 41 72 67 73 3d 28 29 0a  quest.jqArgs=().
07d0: 6a 71 53 65 74 74 69 6e 67 73 3d 27 27 0a 66 6f  jqSettings=''.fo
07e0: 72 20 6a 73 6f 6e 41 72 67 20 69 6e 20 22 24 7b  r jsonArg in "${
07f0: 21 6a 73 6f 6e 41 72 67 73 5b 40 5d 7d 22 3b 20  !jsonArgs[@]}"; 
0800: 64 6f 0a 09 63 61 73 65 20 22 24 7b 6a 73 6f 6e  do..case "${json
0810: 41 72 67 7d 22 20 69 6e 0a 09 09 6f 70 74 69 6f  Arg}" in...optio
0820: 6e 73 7c 70 61 63 6b 61 67 65 73 29 0a 09 09 09  ns|packages)....
0830: 72 65 71 75 65 73 74 41 72 72 61 79 3d 27 5b 5d  requestArray='[]
0840: 27 0a 09 09 09 66 6f 72 20 76 61 6c 75 65 20 69  '....for value i
0850: 6e 20 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a  n ${jsonArgs[${j
0860: 73 6f 6e 41 72 67 7d 5d 7d 3b 20 64 6f 0a 09 09  sonArg}]}; do...
0870: 09 09 72 65 71 75 65 73 74 41 72 72 61 79 3d 22  ..requestArray="
0880: 24 28 6a 71 20 2d 63 72 4d 20 2d 2d 61 72 67 20  $(jq -crM --arg 
0890: 76 61 6c 75 65 20 22 24 7b 76 61 6c 75 65 7d 22  value "${value}"
08a0: 20 27 2e 20 2b 20 5b 20 24 76 61 6c 75 65 20 5d   '. + [ $value ]
08b0: 27 20 3c 3c 3c 22 24 7b 72 65 71 75 65 73 74 41  ' <<<"${requestA
08c0: 72 72 61 79 7d 22 29 22 0a 09 09 09 64 6f 6e 65  rray}")"....done
08d0: 0a 09 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d 61  ....jqArgs+=(--a
08e0: 72 67 6a 73 6f 6e 20 22 24 7b 6a 73 6f 6e 41 72  rgjson "${jsonAr
08f0: 67 7d 22 20 22 24 7b 72 65 71 75 65 73 74 41 72  g}" "${requestAr
0900: 72 61 79 7d 22 29 0a 09 09 09 3b 3b 0a 09 09 2a  ray}")....;;...*
0910: 29 0a 09 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d  )....jqArgs+=(--
0920: 61 72 67 20 22 24 7b 6a 73 6f 6e 41 72 67 7d 22  arg "${jsonArg}"
0930: 20 22 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a   "${jsonArgs[${j
0940: 73 6f 6e 41 72 67 7d 5d 7d 22 29 0a 09 09 09 3b  sonArg}]}")....;
0950: 3b 0a 09 65 73 61 63 0a 0a 09 6a 71 53 65 74 74  ;..esac...jqSett
0960: 69 6e 67 73 3d 22 24 7b 6a 71 53 65 74 74 69 6e  ings="${jqSettin
0970: 67 73 7d 20 7c 20 2e 24 7b 6a 73 6f 6e 41 72 67  gs} | .${jsonArg
0980: 7d 20 3d 20 5c 24 24 7b 6a 73 6f 6e 41 72 67 7d  } = \$${jsonArg}
0990: 22 0a 64 6f 6e 65 0a 6a 71 41 72 67 73 2b 3d 28  ".done.jqArgs+=(
09a0: 22 24 7b 6a 71 53 65 74 74 69 6e 67 73 3a 33 7d  "${jqSettings:3}
09b0: 22 29 0a 0a 6a 73 6f 6e 52 65 71 75 65 73 74 3d  ")..jsonRequest=
09c0: 22 24 28 6a 71 20 2d 63 72 4d 20 22 24 7b 6a 71  "$(jq -crM "${jq
09d0: 41 72 67 73 5b 40 5d 7d 22 20 3c 3c 3c 27 7b 22  Args[@]}" <<<'{"
09e0: 61 63 74 69 6f 6e 22 3a 22 62 75 69 6c 64 22 7d  action":"build"}
09f0: 27 29 22 0a 0a 23 20 4d 61 6b 65 20 74 68 65 20  ')"..# Make the 
0a00: 72 65 71 75 65 73 74 0a 72 65 73 75 6c 74 73 3d  request.results=
0a10: 22 24 28 63 75 72 6c 20 2d 73 53 4c 20 2d 64 20  "$(curl -sSL -d 
0a20: 22 6a 73 6f 6e 3d 24 7b 6a 73 6f 6e 52 65 71 75  "json=${jsonRequ
0a30: 65 73 74 7d 22 20 22 24 7b 65 6e 64 70 6f 69 6e  est}" "${endpoin
0a40: 74 5f 75 72 6c 7d 22 29 22 0a 75 72 6c 3d 22 24  t_url}")".url="$
0a50: 28 6a 71 20 2d 63 72 4d 20 2e 75 72 6c 20 3c 3c  (jq -crM .url <<
0a60: 3c 22 24 7b 72 65 73 75 6c 74 73 7d 22 29 22 0a  <"${results}")".
0a70: 77 68 69 6c 65 20 74 72 75 65 3b 20 64 6f 0a 09  while true; do..
0a80: 69 6e 66 6f 3d 22 24 28 63 75 72 6c 20 2d 73 53  info="$(curl -sS
0a90: 4c 20 22 24 7b 75 72 6c 7d 22 29 22 0a 09 74 65  L "${url}")"..te
0aa0: 72 6d 69 6e 61 6c 3d 22 24 28 6a 71 20 2d 63 72  rminal="$(jq -cr
0ab0: 4d 20 2e 74 65 72 6d 69 6e 61 6c 20 3c 3c 3c 22  M .terminal <<<"
0ac0: 24 7b 69 6e 66 6f 7d 22 29 22 0a 0a 09 69 66 20  ${info}")"...if 
0ad0: 5b 20 22 24 7b 74 65 72 6d 69 6e 61 6c 7d 22 20  [ "${terminal}" 
0ae0: 3d 20 27 74 72 75 65 27 20 5d 3b 20 74 68 65 6e  = 'true' ]; then
0af0: 0a 09 09 62 72 65 61 6b 0a 09 66 69 0a 0a 09 69  ...break..fi...i
0b00: 66 20 5b 20 2d 7a 20 22 24 7b 62 75 69 6c 64 53  f [ -z "${buildS
0b10: 74 61 74 75 73 57 72 6f 74 65 48 65 61 64 65 72  tatusWroteHeader
0b20: 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 62 75 69  }" ]; then...bui
0b30: 6c 64 53 74 61 74 75 73 57 72 6f 74 65 48 65 61  ldStatusWroteHea
0b40: 64 65 72 3d 27 31 27 0a 09 09 65 63 68 6f 20 2d  der='1'...echo -
0b50: 6e 20 27 42 75 69 6c 64 69 6e 67 2e 2e 2e 27 0a  n 'Building...'.
0b60: 09 66 69 0a 0a 09 73 6c 65 65 70 20 33 30 0a 0a  .fi...sleep 30..
0b70: 09 65 63 68 6f 20 2d 6e 20 27 2e 27 0a 64 6f 6e  .echo -n '.'.don
0b80: 65 0a 73 74 61 74 75 73 3d 22 24 28 6a 71 20 2d  e.status="$(jq -
0b90: 63 72 4d 20 2e 73 74 61 74 75 73 20 3c 3c 3c 22  crM .status <<<"
0ba0: 24 7b 69 6e 66 6f 7d 22 29 22 0a 62 75 69 6c 64  ${info}")".build
0bb0: 5f 6c 6f 67 5f 75 72 6c 3d 22 24 28 6a 71 20 2d  _log_url="$(jq -
0bc0: 63 72 4d 20 2e 62 75 69 6c 64 5f 6c 6f 67 5f 75  crM .build_log_u
0bd0: 72 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29  rl <<<"${info}")
0be0: 22 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 62 75  "..if [ -n "${bu
0bf0: 69 6c 64 53 74 61 74 75 73 57 72 6f 74 65 48 65  ildStatusWroteHe
0c00: 61 64 65 72 7d 22 20 5d 3b 20 74 68 65 6e 0a 09  ader}" ]; then..
0c10: 65 63 68 6f 20 22 20 24 7b 73 74 61 74 75 73 7d  echo " ${status}
0c20: 22 0a 66 69 0a 0a 69 66 20 5b 20 22 24 7b 73 74  ".fi..if [ "${st
0c30: 61 74 75 73 7d 22 20 21 3d 20 22 63 6f 6d 70 6c  atus}" != "compl
0c40: 65 74 65 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63  ete" ]; then..ec
0c50: 68 6f 20 22 24 7b 73 74 61 74 75 73 7d 3a 20 42  ho "${status}: B
0c60: 75 69 6c 64 20 74 65 72 6d 69 6e 61 74 65 64 20  uild terminated 
0c70: 69 6e 20 65 72 72 6f 72 22 20 3e 26 32 0a 09 69  in error" >&2..i
0c80: 66 20 5b 20 22 24 7b 69 6e 74 65 72 6e 61 6c 4f  f [ "${internalO
0c90: 70 74 69 6f 6e 73 56 65 72 62 6f 73 65 7d 22 20  ptionsVerbose}" 
0ca0: 3d 20 27 74 72 75 65 27 20 5d 3b 20 74 68 65 6e  = 'true' ]; then
0cb0: 0a 09 09 63 75 72 6c 20 2d 73 53 4c 20 22 24 7b  ...curl -sSL "${
0cc0: 62 75 69 6c 64 5f 6c 6f 67 5f 75 72 6c 7d 22 20  build_log_url}" 
0cd0: 3e 26 32 0a 09 66 69 0a 0a 09 65 78 69 74 20 31  >&2..fi...exit 1
0ce0: 0a 66 69 0a 0a 6b 69 74 5f 75 72 6c 3d 22 24 28  .fi..kit_url="$(
0cf0: 6a 71 20 2d 63 72 4d 20 2e 6b 69 74 5f 75 72 6c  jq -crM .kit_url
0d00: 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a   <<<"${info}")".
0d10: 69 66 20 5b 20 2d 7a 20 22 24 7b 6b 69 74 5f 66  if [ -z "${kit_f
0d20: 69 6c 65 6e 61 6d 65 7d 22 20 5d 3b 20 74 68 65  ilename}" ]; the
0d30: 6e 0a 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d  n..kit_filename=
0d40: 22 24 7b 6b 69 74 5f 75 72 6c 2f 2f 2a 5c 2f 2f  "${kit_url//*\//
0d50: 7d 22 0a 09 63 61 73 65 20 22 24 7b 6b 69 74 5f  }"..case "${kit_
0d60: 66 69 6c 65 6e 61 6d 65 7d 22 20 69 6e 0a 09 09  filename}" in...
0d70: 2a 2e 2a 29 0a 09 09 09 6b 69 74 5f 66 69 6c 65  *.*)....kit_file
0d80: 6e 61 6d 65 5f 62 61 73 65 3d 22 24 7b 6b 69 74  name_base="${kit
0d90: 5f 66 69 6c 65 6e 61 6d 65 2f 2f 2e 2a 2f 7d 22  _filename//.*/}"
0da0: 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  ....kit_filename
0db0: 5f 65 78 74 3d 22 2e 24 7b 6b 69 74 5f 66 69 6c  _ext=".${kit_fil
0dc0: 65 6e 61 6d 65 2f 2f 2a 2e 2f 7d 22 0a 09 09 09  ename//*./}"....
0dd0: 3b 3b 0a 09 09 2a 29 0a 09 09 09 6b 69 74 5f 66  ;;...*)....kit_f
0de0: 69 6c 65 6e 61 6d 65 5f 62 61 73 65 3d 22 24 7b  ilename_base="${
0df0: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 0a 09  kit_filename}"..
0e00: 09 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 65  ..kit_filename_e
0e10: 78 74 3d 27 27 0a 09 09 09 3b 3b 0a 09 65 73 61  xt=''....;;..esa
0e20: 63 0a 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f  c..kit_filename_
0e30: 70 6c 61 74 66 6f 72 6d 3d 22 24 28 6a 71 20 2d  platform="$(jq -
0e40: 63 72 4d 20 2e 70 6c 61 74 66 6f 72 6d 20 3c 3c  crM .platform <<
0e50: 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 09 6b 69  <"${info}")"..ki
0e60: 74 5f 66 69 6c 65 6e 61 6d 65 5f 74 63 6c 5f 76  t_filename_tcl_v
0e70: 65 72 73 69 6f 6e 3d 22 24 28 6a 71 20 2d 63 72  ersion="$(jq -cr
0e80: 4d 20 2e 74 63 6c 5f 76 65 72 73 69 6f 6e 20 3c  M .tcl_version <
0e90: 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 09 6b  <<"${info}")"..k
0ea0: 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 22 24 7b 6b  it_filename="${k
0eb0: 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 62 61 73 65  it_filename_base
0ec0: 7d 2d 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  }-${kit_filename
0ed0: 5f 70 6c 61 74 66 6f 72 6d 7d 2d 24 7b 6b 69 74  _platform}-${kit
0ee0: 5f 66 69 6c 65 6e 61 6d 65 5f 74 63 6c 5f 76 65  _filename_tcl_ve
0ef0: 72 73 69 6f 6e 7d 24 7b 6b 69 74 5f 66 69 6c 65  rsion}${kit_file
0f00: 6e 61 6d 65 5f 65 78 74 7d 22 0a 66 69 0a 0a 63  name_ext}".fi..c
0f10: 75 72 6c 20 2d 73 53 4c 20 22 24 7b 6b 69 74 5f  url -sSL "${kit_
0f20: 75 72 6c 7d 22 20 3e 20 22 24 7b 6b 69 74 5f 66  url}" > "${kit_f
0f30: 69 6c 65 6e 61 6d 65 7d 22 0a 63 68 6d 6f 64 20  ilename}".chmod 
0f40: 37 35 35 20 22 24 7b 6b 69 74 5f 66 69 6c 65 6e  755 "${kit_filen
0f50: 61 6d 65 7d 22 0a 0a 65 63 68 6f 20 22 57 72 6f  ame}"..echo "Wro
0f60: 74 65 3a 20 24 7b 6b 69 74 5f 66 69 6c 65 6e 61  te: ${kit_filena
0f70: 6d 65 7d 22 0a 65 78 69 74 20 30 0a              me}".exit 0.