Hex Artifact Content

Artifact 8826872ee91a15890e0c7234ac0306dde87361ed:


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: 27 0a 09 65 63 68 6f 20 27 64 6f 77 6e 6c 6f 61  '..echo 'downloa
0190: 64 2d 61 70 69 2d 63 6c 69 65 6e 74 20 7b 2d 2d  d-api-client {--
01a0: 68 65 6c 70 7c 2d 2d 70 6c 61 74 66 6f 72 6d 73  help|--platforms
01b0: 7c 2d 2d 74 63 6c 2d 76 65 72 73 69 6f 6e 73 7c  |--tcl-versions|
01c0: 27 0a 09 65 63 68 6f 20 27 20 20 20 20 20 20 20  '..echo '       
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d                --
01e0: 6b 69 74 63 72 65 61 74 6f 72 2d 76 65 72 73 69  kitcreator-versi
01f0: 6f 6e 73 7c 2d 2d 70 61 63 6b 61 67 65 73 7d 27  ons|--packages}'
0200: 0a 7d 0a 0a 23 20 53 65 74 20 61 72 67 75 6d 65  .}..# Set argume
0210: 6e 74 73 0a 64 65 63 6c 61 72 65 20 2d 41 20 6a  nts.declare -A j
0220: 73 6f 6e 41 72 67 73 0a 6a 73 6f 6e 41 72 67 73  sonArgs.jsonArgs
0230: 5b 22 70 6c 61 74 66 6f 72 6d 22 5d 3d 22 24 28  ["platform"]="$(
0240: 75 6e 61 6d 65 20 2d 73 29 2d 24 28 75 6e 61 6d  uname -s)-$(unam
0250: 65 20 2d 6d 29 22 0a 0a 6e 65 78 74 41 72 67 3d  e -m)"..nextArg=
0260: 27 27 0a 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d  ''.kit_filename=
0270: 27 27 0a 6f 70 74 69 6f 6e 73 3d 28 29 0a 66 6f  ''.options=().fo
0280: 72 20 61 72 67 20 69 6e 20 22 24 40 22 3b 20 64  r arg in "$@"; d
0290: 6f 0a 09 69 66 20 5b 20 2d 6e 20 22 24 7b 6e 65  o..if [ -n "${ne
02a0: 78 74 41 72 67 7d 22 20 5d 3b 20 74 68 65 6e 0a  xtArg}" ]; then.
02b0: 09 09 6a 73 6f 6e 41 72 67 73 5b 22 24 7b 6e 65  ..jsonArgs["${ne
02c0: 78 74 41 72 67 7d 22 5d 3d 22 24 7b 61 72 67 7d  xtArg}"]="${arg}
02d0: 22 0a 09 09 6e 65 78 74 41 72 67 3d 27 27 0a 09  "...nextArg=''..
02e0: 09 63 6f 6e 74 69 6e 75 65 0a 09 66 69 0a 0a 09  .continue..fi...
02f0: 63 61 73 65 20 22 24 7b 61 72 67 7d 22 20 69 6e  case "${arg}" in
0300: 0a 09 09 2d 2d 70 6c 61 74 66 6f 72 6d 7c 2d 2d  ...--platform|--
0310: 74 63 6c 2d 76 65 72 73 69 6f 6e 7c 2d 2d 6b 69  tcl-version|--ki
0320: 74 63 72 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e  tcreator-version
0330: 29 0a 09 09 09 6e 65 78 74 41 72 67 3d 22 24 7b  )....nextArg="${
0340: 61 72 67 3a 32 7d 22 0a 09 09 09 6e 65 78 74 41  arg:2}"....nextA
0350: 72 67 3d 22 24 7b 6e 65 78 74 41 72 67 2f 2f 2d  rg="${nextArg//-
0360: 2f 5f 7d 22 0a 09 09 09 3b 3b 0a 09 09 2d 2d 6b  /_}"....;;...--k
0370: 69 74 64 6c 6c 7c 2d 2d 74 68 72 65 61 64 65 64  itdll|--threaded
0380: 7c 2d 2d 64 65 62 75 67 7c 2d 2d 64 79 6e 61 6d  |--debug|--dynam
0390: 69 63 74 6b 7c 2d 2d 73 74 61 74 69 63 70 6b 67  ictk|--staticpkg
03a0: 73 29 0a 09 09 09 6f 70 74 69 6f 6e 73 2b 3d 28  s)....options+=(
03b0: 22 24 7b 61 72 67 3a 32 7d 22 29 0a 09 09 09 3b  "${arg:2}")....;
03c0: 3b 0a 09 09 2d 2d 70 6c 61 74 66 6f 72 6d 73 7c  ;...--platforms|
03d0: 2d 2d 74 63 6c 2d 76 65 72 73 69 6f 6e 73 7c 2d  --tcl-versions|-
03e0: 2d 6b 69 74 63 72 65 61 74 6f 72 2d 76 65 72 73  -kitcreator-vers
03f0: 69 6f 6e 73 7c 2d 2d 70 61 63 6b 61 67 65 73 7c  ions|--packages|
0400: 2d 2d 6f 70 74 69 6f 6e 73 29 0a 09 09 09 61 63  --options)....ac
0410: 74 69 6f 6e 3d 22 24 7b 61 72 67 3a 32 7d 22 0a  tion="${arg:2}".
0420: 09 09 09 61 63 74 69 6f 6e 3d 22 24 7b 61 63 74  ...action="${act
0430: 69 6f 6e 2f 2f 2d 2f 5f 7d 22 0a 0a 09 09 09 66  ion//-/_}".....f
0440: 6f 72 6d 61 74 53 74 72 69 6e 67 3d 27 25 2d 32  ormatString='%-2
0450: 30 73 20 7c 20 25 73 5c 6e 27 0a 09 09 09 70 72  0s | %s\n'....pr
0460: 69 6e 74 66 20 22 24 7b 66 6f 72 6d 61 74 53 74  intf "${formatSt
0470: 72 69 6e 67 7d 22 20 4e 61 6d 65 20 44 65 73 63  ring}" Name Desc
0480: 72 69 70 74 69 6f 6e 0a 09 09 09 70 72 69 6e 74  ription....print
0490: 66 20 27 25 73 2b 25 73 5c 6e 27 20 2d 2d 2d 2d  f '%s+%s\n' ----
04a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04b0: 2d 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  - --------------
04c0: 2d 2d 2d 2d 2d 2d 2d 0a 09 09 09 63 75 72 6c 20  -------....curl 
04d0: 2d 73 53 4c 20 2d 64 20 22 6a 73 6f 6e 3d 7b 5c  -sSL -d "json={\
04e0: 22 61 63 74 69 6f 6e 5c 22 3a 5c 22 24 7b 61 63  "action\":\"${ac
04f0: 74 69 6f 6e 7d 5c 22 7d 22 20 22 24 7b 65 6e 64  tion}\"}" "${end
0500: 70 6f 69 6e 74 5f 75 72 6c 7d 22 20 7c 20 6a 71  point_url}" | jq
0510: 20 2d 63 72 4d 20 27 6b 65 79 73 5b 5d 20 61 73   -crM 'keys[] as
0520: 20 24 6b 20 7c 20 22 5c 28 24 6b 29 20 5c 28 2e   $k | "\($k) \(.
0530: 5b 24 6b 5d 29 22 27 20 7c 20 77 68 69 6c 65 20  [$k])"' | while 
0540: 72 65 61 64 20 2d 72 20 70 6c 61 74 66 6f 72 6d  read -r platform
0550: 20 64 65 73 63 72 69 70 74 69 6f 6e 3b 20 64 6f   description; do
0560: 0a 09 09 09 09 70 72 69 6e 74 66 20 22 24 7b 66  .....printf "${f
0570: 6f 72 6d 61 74 53 74 72 69 6e 67 7d 22 20 22 24  ormatString}" "$
0580: 7b 70 6c 61 74 66 6f 72 6d 7d 22 20 22 24 7b 64  {platform}" "${d
0590: 65 73 63 72 69 70 74 69 6f 6e 7d 22 0a 09 09 09  escription}"....
05a0: 64 6f 6e 65 0a 09 09 09 65 78 69 74 20 30 0a 09  done....exit 0..
05b0: 09 09 3b 3b 0a 09 09 2d 2d 68 65 6c 70 29 0a 09  ..;;...--help)..
05c0: 09 09 70 72 69 6e 74 5f 68 65 6c 70 0a 09 09 09  ..print_help....
05d0: 65 78 69 74 20 30 0a 09 09 09 3b 3b 0a 09 09 2a  exit 0....;;...*
05e0: 29 0a 09 09 09 65 63 68 6f 20 22 49 6e 76 61 6c  )....echo "Inval
05f0: 69 64 20 6f 70 74 69 6f 6e 20 5c 22 24 7b 61 72  id option \"${ar
0600: 67 7d 5c 22 22 20 3e 26 32 0a 09 09 09 70 72 69  g}\"" >&2....pri
0610: 6e 74 5f 68 65 6c 70 20 3e 26 32 0a 09 09 09 65  nt_help >&2....e
0620: 78 69 74 20 31 0a 09 65 73 61 63 0a 64 6f 6e 65  xit 1..esac.done
0630: 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 6f 70 74  ..if [ -n "${opt
0640: 69 6f 6e 73 5b 2a 5d 7d 22 20 5d 3b 20 74 68 65  ions[*]}" ]; the
0650: 6e 0a 09 6a 73 6f 6e 41 72 67 73 5b 22 6f 70 74  n..jsonArgs["opt
0660: 69 6f 6e 73 22 5d 3d 22 24 7b 6f 70 74 69 6f 6e  ions"]="${option
0670: 73 5b 40 5d 7d 22 0a 66 69 0a 0a 23 20 43 6f 6e  s[@]}".fi..# Con
0680: 76 65 72 74 20 61 72 67 75 6d 65 6e 74 73 20 69  vert arguments i
0690: 6e 74 6f 20 61 20 72 65 71 75 65 73 74 0a 6a 71  nto a request.jq
06a0: 41 72 67 73 3d 28 29 0a 6a 71 53 65 74 74 69 6e  Args=().jqSettin
06b0: 67 73 3d 27 27 0a 66 6f 72 20 6a 73 6f 6e 41 72  gs=''.for jsonAr
06c0: 67 20 69 6e 20 22 24 7b 21 6a 73 6f 6e 41 72 67  g in "${!jsonArg
06d0: 73 5b 40 5d 7d 22 3b 20 64 6f 0a 09 63 61 73 65  s[@]}"; do..case
06e0: 20 22 24 7b 6a 73 6f 6e 41 72 67 7d 22 20 69 6e   "${jsonArg}" in
06f0: 0a 09 09 6f 70 74 69 6f 6e 73 29 0a 09 09 09 72  ...options)....r
0700: 65 71 75 65 73 74 41 72 72 61 79 3d 27 5b 5d 27  equestArray='[]'
0710: 0a 09 09 09 66 6f 72 20 76 61 6c 75 65 20 69 6e  ....for value in
0720: 20 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a 73   ${jsonArgs[${js
0730: 6f 6e 41 72 67 7d 5d 7d 3b 20 64 6f 0a 09 09 09  onArg}]}; do....
0740: 09 72 65 71 75 65 73 74 41 72 72 61 79 3d 22 24  .requestArray="$
0750: 28 6a 71 20 2d 63 72 4d 20 2d 2d 61 72 67 20 76  (jq -crM --arg v
0760: 61 6c 75 65 20 22 24 7b 76 61 6c 75 65 7d 22 20  alue "${value}" 
0770: 27 2e 20 2b 20 5b 20 24 76 61 6c 75 65 20 5d 27  '. + [ $value ]'
0780: 20 3c 3c 3c 22 24 7b 72 65 71 75 65 73 74 41 72   <<<"${requestAr
0790: 72 61 79 7d 22 29 22 0a 09 09 09 64 6f 6e 65 0a  ray}")"....done.
07a0: 09 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d 61 72  ...jqArgs+=(--ar
07b0: 67 6a 73 6f 6e 20 22 24 7b 6a 73 6f 6e 41 72 67  gjson "${jsonArg
07c0: 7d 22 20 22 24 7b 72 65 71 75 65 73 74 41 72 72  }" "${requestArr
07d0: 61 79 7d 22 29 0a 09 09 09 3b 3b 0a 09 09 2a 29  ay}")....;;...*)
07e0: 0a 09 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d 61  ....jqArgs+=(--a
07f0: 72 67 20 22 24 7b 6a 73 6f 6e 41 72 67 7d 22 20  rg "${jsonArg}" 
0800: 22 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a 73  "${jsonArgs[${js
0810: 6f 6e 41 72 67 7d 5d 7d 22 29 0a 09 09 09 3b 3b  onArg}]}")....;;
0820: 0a 09 65 73 61 63 0a 0a 09 6a 71 53 65 74 74 69  ..esac...jqSetti
0830: 6e 67 73 3d 22 24 7b 6a 71 53 65 74 74 69 6e 67  ngs="${jqSetting
0840: 73 7d 20 7c 20 2e 24 7b 6a 73 6f 6e 41 72 67 7d  s} | .${jsonArg}
0850: 20 3d 20 5c 24 24 7b 6a 73 6f 6e 41 72 67 7d 22   = \$${jsonArg}"
0860: 0a 64 6f 6e 65 0a 6a 71 41 72 67 73 2b 3d 28 22  .done.jqArgs+=("
0870: 24 7b 6a 71 53 65 74 74 69 6e 67 73 3a 33 7d 22  ${jqSettings:3}"
0880: 29 0a 0a 6a 73 6f 6e 52 65 71 75 65 73 74 3d 22  )..jsonRequest="
0890: 24 28 6a 71 20 2d 63 72 4d 20 22 24 7b 6a 71 41  $(jq -crM "${jqA
08a0: 72 67 73 5b 40 5d 7d 22 20 3c 3c 3c 27 7b 22 61  rgs[@]}" <<<'{"a
08b0: 63 74 69 6f 6e 22 3a 22 62 75 69 6c 64 22 7d 27  ction":"build"}'
08c0: 29 22 0a 0a 23 20 4d 61 6b 65 20 74 68 65 20 72  )"..# Make the r
08d0: 65 71 75 65 73 74 0a 72 65 73 75 6c 74 73 3d 22  equest.results="
08e0: 24 28 63 75 72 6c 20 2d 73 53 4c 20 2d 64 20 22  $(curl -sSL -d "
08f0: 6a 73 6f 6e 3d 24 7b 6a 73 6f 6e 52 65 71 75 65  json=${jsonReque
0900: 73 74 7d 22 20 22 24 7b 65 6e 64 70 6f 69 6e 74  st}" "${endpoint
0910: 5f 75 72 6c 7d 22 29 22 0a 75 72 6c 3d 22 24 28  _url}")".url="$(
0920: 6a 71 20 2d 63 72 4d 20 2e 75 72 6c 20 3c 3c 3c  jq -crM .url <<<
0930: 22 24 7b 72 65 73 75 6c 74 73 7d 22 29 22 0a 77  "${results}")".w
0940: 68 69 6c 65 20 74 72 75 65 3b 20 64 6f 0a 09 69  hile true; do..i
0950: 6e 66 6f 3d 22 24 28 63 75 72 6c 20 2d 73 53 4c  nfo="$(curl -sSL
0960: 20 22 24 7b 75 72 6c 7d 22 29 22 0a 09 74 65 72   "${url}")"..ter
0970: 6d 69 6e 61 6c 3d 22 24 28 6a 71 20 2d 63 72 4d  minal="$(jq -crM
0980: 20 2e 74 65 72 6d 69 6e 61 6c 20 3c 3c 3c 22 24   .terminal <<<"$
0990: 7b 69 6e 66 6f 7d 22 29 22 0a 0a 09 69 66 20 5b  {info}")"...if [
09a0: 20 22 24 7b 74 65 72 6d 69 6e 61 6c 7d 22 20 3d   "${terminal}" =
09b0: 20 27 74 72 75 65 27 20 5d 3b 20 74 68 65 6e 0a   'true' ]; then.
09c0: 09 09 62 72 65 61 6b 0a 09 66 69 0a 0a 09 69 66  ..break..fi...if
09d0: 20 5b 20 2d 7a 20 22 24 7b 62 75 69 6c 64 53 74   [ -z "${buildSt
09e0: 61 74 75 73 57 72 6f 74 65 48 65 61 64 65 72 7d  atusWroteHeader}
09f0: 22 20 5d 3b 20 74 68 65 6e 0a 09 09 62 75 69 6c  " ]; then...buil
0a00: 64 53 74 61 74 75 73 57 72 6f 74 65 48 65 61 64  dStatusWroteHead
0a10: 65 72 3d 27 31 27 0a 09 09 65 63 68 6f 20 2d 6e  er='1'...echo -n
0a20: 20 27 42 75 69 6c 64 69 6e 67 2e 2e 2e 27 0a 09   'Building...'..
0a30: 66 69 0a 0a 09 73 6c 65 65 70 20 33 30 0a 0a 09  fi...sleep 30...
0a40: 65 63 68 6f 20 2d 6e 20 27 2e 27 0a 64 6f 6e 65  echo -n '.'.done
0a50: 0a 73 74 61 74 75 73 3d 22 24 28 6a 71 20 2d 63  .status="$(jq -c
0a60: 72 4d 20 2e 73 74 61 74 75 73 20 3c 3c 3c 22 24  rM .status <<<"$
0a70: 7b 69 6e 66 6f 7d 22 29 22 0a 62 75 69 6c 64 5f  {info}")".build_
0a80: 6c 6f 67 5f 75 72 6c 3d 22 24 28 6a 71 20 2d 63  log_url="$(jq -c
0a90: 72 4d 20 2e 62 75 69 6c 64 5f 6c 6f 67 5f 75 72  rM .build_log_ur
0aa0: 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22  l <<<"${info}")"
0ab0: 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 62 75 69  ..if [ -n "${bui
0ac0: 6c 64 53 74 61 74 75 73 57 72 6f 74 65 48 65 61  ldStatusWroteHea
0ad0: 64 65 72 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 65  der}" ]; then..e
0ae0: 63 68 6f 20 22 20 24 7b 73 74 61 74 75 73 7d 22  cho " ${status}"
0af0: 0a 66 69 0a 0a 69 66 20 5b 20 22 24 7b 73 74 61  .fi..if [ "${sta
0b00: 74 75 73 7d 22 20 21 3d 20 22 63 6f 6d 70 6c 65  tus}" != "comple
0b10: 74 65 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63 68  te" ]; then..ech
0b20: 6f 20 22 66 61 69 6c 65 64 3a 20 24 7b 73 74 61  o "failed: ${sta
0b30: 74 75 73 7d 22 20 3e 26 32 0a 09 63 75 72 6c 20  tus}" >&2..curl 
0b40: 2d 73 53 4c 20 22 24 7b 62 75 69 6c 64 5f 6c 6f  -sSL "${build_lo
0b50: 67 5f 75 72 6c 7d 22 20 3e 26 32 0a 0a 09 65 78  g_url}" >&2...ex
0b60: 69 74 20 31 0a 66 69 0a 0a 6b 69 74 5f 75 72 6c  it 1.fi..kit_url
0b70: 3d 22 24 28 6a 71 20 2d 63 72 4d 20 2e 6b 69 74  ="$(jq -crM .kit
0b80: 5f 75 72 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d  _url <<<"${info}
0b90: 22 29 22 0a 69 66 20 5b 20 2d 7a 20 22 24 7b 6b  ")".if [ -z "${k
0ba0: 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 20 5d 3b  it_filename}" ];
0bb0: 20 74 68 65 6e 0a 09 6b 69 74 5f 66 69 6c 65 6e   then..kit_filen
0bc0: 61 6d 65 3d 22 24 7b 6b 69 74 5f 75 72 6c 2f 2f  ame="${kit_url//
0bd0: 2a 5c 2f 2f 7d 22 0a 09 63 61 73 65 20 22 24 7b  *\//}"..case "${
0be0: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 20 69  kit_filename}" i
0bf0: 6e 0a 09 09 2a 2e 2a 29 0a 09 09 09 6b 69 74 5f  n...*.*)....kit_
0c00: 66 69 6c 65 6e 61 6d 65 5f 62 61 73 65 3d 22 24  filename_base="$
0c10: 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 2f 2f 2e  {kit_filename//.
0c20: 2a 2f 7d 22 0a 09 09 09 6b 69 74 5f 66 69 6c 65  */}"....kit_file
0c30: 6e 61 6d 65 5f 65 78 74 3d 22 2e 24 7b 6b 69 74  name_ext=".${kit
0c40: 5f 66 69 6c 65 6e 61 6d 65 2f 2f 2a 2e 2f 7d 22  _filename//*./}"
0c50: 0a 09 09 09 3b 3b 0a 09 09 2a 29 0a 09 09 09 6b  ....;;...*)....k
0c60: 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 62 61 73 65  it_filename_base
0c70: 3d 22 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  ="${kit_filename
0c80: 7d 22 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e 61  }"....kit_filena
0c90: 6d 65 5f 65 78 74 3d 27 27 0a 09 09 09 3b 3b 0a  me_ext=''....;;.
0ca0: 09 65 73 61 63 0a 09 6b 69 74 5f 66 69 6c 65 6e  .esac..kit_filen
0cb0: 61 6d 65 5f 70 6c 61 74 66 6f 72 6d 3d 22 24 28  ame_platform="$(
0cc0: 6a 71 20 2d 63 72 4d 20 2e 70 6c 61 74 66 6f 72  jq -crM .platfor
0cd0: 6d 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22  m <<<"${info}")"
0ce0: 0a 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 74  ..kit_filename_t
0cf0: 63 6c 5f 76 65 72 73 69 6f 6e 3d 22 24 28 6a 71  cl_version="$(jq
0d00: 20 2d 63 72 4d 20 2e 74 63 6c 5f 76 65 72 73 69   -crM .tcl_versi
0d10: 6f 6e 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29  on <<<"${info}")
0d20: 22 0a 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d  "..kit_filename=
0d30: 22 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f  "${kit_filename_
0d40: 62 61 73 65 7d 2d 24 7b 6b 69 74 5f 66 69 6c 65  base}-${kit_file
0d50: 6e 61 6d 65 5f 70 6c 61 74 66 6f 72 6d 7d 2d 24  name_platform}-$
0d60: 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 74 63  {kit_filename_tc
0d70: 6c 5f 76 65 72 73 69 6f 6e 7d 24 7b 6b 69 74 5f  l_version}${kit_
0d80: 66 69 6c 65 6e 61 6d 65 5f 65 78 74 7d 22 0a 66  filename_ext}".f
0d90: 69 0a 0a 63 75 72 6c 20 2d 73 53 4c 20 22 24 7b  i..curl -sSL "${
0da0: 6b 69 74 5f 75 72 6c 7d 22 20 3e 20 22 24 7b 6b  kit_url}" > "${k
0db0: 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 0a 63 68  it_filename}".ch
0dc0: 6d 6f 64 20 37 35 35 20 22 24 7b 6b 69 74 5f 66  mod 755 "${kit_f
0dd0: 69 6c 65 6e 61 6d 65 7d 22 0a 0a 65 63 68 6f 20  ilename}"..echo 
0de0: 22 57 72 6f 74 65 3a 20 24 7b 6b 69 74 5f 66 69  "Wrote: ${kit_fi
0df0: 6c 65 6e 61 6d 65 7d 22 0a 65 78 69 74 20 30 0a  lename}".exit 0.