Hex Artifact Content

Artifact 45c8f50b6412186d9852f6025b6075a9a33ed6f3:


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 69 6e 74 65 72 6e  ptions=().intern
0290: 61 6c 4f 70 74 69 6f 6e 73 56 65 72 62 6f 73 65  alOptionsVerbose
02a0: 3d 27 66 61 6c 73 65 27 0a 66 6f 72 20 61 72 67  ='false'.for arg
02b0: 20 69 6e 20 22 24 40 22 3b 20 64 6f 0a 09 69 66   in "$@"; do..if
02c0: 20 5b 20 2d 6e 20 22 24 7b 6e 65 78 74 41 72 67   [ -n "${nextArg
02d0: 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 6a 73 6f  }" ]; then...jso
02e0: 6e 41 72 67 73 5b 22 24 7b 6e 65 78 74 41 72 67  nArgs["${nextArg
02f0: 7d 22 5d 3d 22 24 7b 61 72 67 7d 22 0a 09 09 6e  }"]="${arg}"...n
0300: 65 78 74 41 72 67 3d 27 27 0a 09 09 63 6f 6e 74  extArg=''...cont
0310: 69 6e 75 65 0a 09 66 69 0a 0a 09 63 61 73 65 20  inue..fi...case 
0320: 22 24 7b 61 72 67 7d 22 20 69 6e 0a 09 09 2d 2d  "${arg}" in...--
0330: 76 65 72 62 6f 73 65 29 0a 09 09 09 69 6e 74 65  verbose)....inte
0340: 72 6e 61 6c 4f 70 74 69 6f 6e 73 56 65 72 62 6f  rnalOptionsVerbo
0350: 73 65 3d 27 74 72 75 65 27 0a 09 09 09 3b 3b 0a  se='true'....;;.
0360: 09 09 2d 2d 70 6c 61 74 66 6f 72 6d 7c 2d 2d 74  ..--platform|--t
0370: 63 6c 2d 76 65 72 73 69 6f 6e 7c 2d 2d 6b 69 74  cl-version|--kit
0380: 63 72 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e 29  creator-version)
0390: 0a 09 09 09 6e 65 78 74 41 72 67 3d 22 24 7b 61  ....nextArg="${a
03a0: 72 67 3a 32 7d 22 0a 09 09 09 6e 65 78 74 41 72  rg:2}"....nextAr
03b0: 67 3d 22 24 7b 6e 65 78 74 41 72 67 2f 2f 2d 2f  g="${nextArg//-/
03c0: 5f 7d 22 0a 09 09 09 3b 3b 0a 09 09 2d 2d 6b 69  _}"....;;...--ki
03d0: 74 64 6c 6c 7c 2d 2d 74 68 72 65 61 64 65 64 7c  tdll|--threaded|
03e0: 2d 2d 64 65 62 75 67 7c 2d 2d 64 79 6e 61 6d 69  --debug|--dynami
03f0: 63 74 6b 7c 2d 2d 73 74 61 74 69 63 70 6b 67 73  ctk|--staticpkgs
0400: 29 0a 09 09 09 6f 70 74 69 6f 6e 73 2b 3d 28 22  )....options+=("
0410: 24 7b 61 72 67 3a 32 7d 22 29 0a 09 09 09 3b 3b  ${arg:2}")....;;
0420: 0a 09 09 2d 2d 70 6c 61 74 66 6f 72 6d 73 7c 2d  ...--platforms|-
0430: 2d 74 63 6c 2d 76 65 72 73 69 6f 6e 73 7c 2d 2d  -tcl-versions|--
0440: 6b 69 74 63 72 65 61 74 6f 72 2d 76 65 72 73 69  kitcreator-versi
0450: 6f 6e 73 7c 2d 2d 70 61 63 6b 61 67 65 73 7c 2d  ons|--packages|-
0460: 2d 6f 70 74 69 6f 6e 73 29 0a 09 09 09 61 63 74  -options)....act
0470: 69 6f 6e 3d 22 24 7b 61 72 67 3a 32 7d 22 0a 09  ion="${arg:2}"..
0480: 09 09 61 63 74 69 6f 6e 3d 22 24 7b 61 63 74 69  ..action="${acti
0490: 6f 6e 2f 2f 2d 2f 5f 7d 22 0a 0a 09 09 09 66 6f  on//-/_}".....fo
04a0: 72 6d 61 74 53 74 72 69 6e 67 3d 27 25 2d 32 30  rmatString='%-20
04b0: 73 20 7c 20 25 73 5c 6e 27 0a 09 09 09 70 72 69  s | %s\n'....pri
04c0: 6e 74 66 20 22 24 7b 66 6f 72 6d 61 74 53 74 72  ntf "${formatStr
04d0: 69 6e 67 7d 22 20 4e 61 6d 65 20 44 65 73 63 72  ing}" Name Descr
04e0: 69 70 74 69 6f 6e 0a 09 09 09 70 72 69 6e 74 66  iption....printf
04f0: 20 27 25 73 2b 25 73 5c 6e 27 20 2d 2d 2d 2d 2d   '%s+%s\n' -----
0500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0510: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
0520: 2d 2d 2d 2d 2d 2d 0a 09 09 09 63 75 72 6c 20 2d  ------....curl -
0530: 73 53 4c 20 2d 64 20 22 6a 73 6f 6e 3d 7b 5c 22  sSL -d "json={\"
0540: 61 63 74 69 6f 6e 5c 22 3a 5c 22 24 7b 61 63 74  action\":\"${act
0550: 69 6f 6e 7d 5c 22 7d 22 20 22 24 7b 65 6e 64 70  ion}\"}" "${endp
0560: 6f 69 6e 74 5f 75 72 6c 7d 22 20 7c 20 6a 71 20  oint_url}" | jq 
0570: 2d 63 72 4d 20 27 6b 65 79 73 5b 5d 20 61 73 20  -crM 'keys[] as 
0580: 24 6b 20 7c 20 22 5c 28 24 6b 29 20 5c 28 2e 5b  $k | "\($k) \(.[
0590: 24 6b 5d 29 22 27 20 7c 20 77 68 69 6c 65 20 72  $k])"' | while r
05a0: 65 61 64 20 2d 72 20 70 6c 61 74 66 6f 72 6d 20  ead -r platform 
05b0: 64 65 73 63 72 69 70 74 69 6f 6e 3b 20 64 6f 0a  description; do.
05c0: 09 09 09 09 70 72 69 6e 74 66 20 22 24 7b 66 6f  ....printf "${fo
05d0: 72 6d 61 74 53 74 72 69 6e 67 7d 22 20 22 24 7b  rmatString}" "${
05e0: 70 6c 61 74 66 6f 72 6d 7d 22 20 22 24 7b 64 65  platform}" "${de
05f0: 73 63 72 69 70 74 69 6f 6e 7d 22 0a 09 09 09 64  scription}"....d
0600: 6f 6e 65 0a 09 09 09 65 78 69 74 20 30 0a 09 09  one....exit 0...
0610: 09 3b 3b 0a 09 09 2d 2d 68 65 6c 70 29 0a 09 09  .;;...--help)...
0620: 09 70 72 69 6e 74 5f 68 65 6c 70 0a 09 09 09 65  .print_help....e
0630: 78 69 74 20 30 0a 09 09 09 3b 3b 0a 09 09 2a 29  xit 0....;;...*)
0640: 0a 09 09 09 65 63 68 6f 20 22 49 6e 76 61 6c 69  ....echo "Invali
0650: 64 20 6f 70 74 69 6f 6e 20 5c 22 24 7b 61 72 67  d option \"${arg
0660: 7d 5c 22 22 20 3e 26 32 0a 09 09 09 70 72 69 6e  }\"" >&2....prin
0670: 74 5f 68 65 6c 70 20 3e 26 32 0a 09 09 09 65 78  t_help >&2....ex
0680: 69 74 20 31 0a 09 65 73 61 63 0a 64 6f 6e 65 0a  it 1..esac.done.
0690: 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 6f 70 74 69  .if [ -n "${opti
06a0: 6f 6e 73 5b 2a 5d 7d 22 20 5d 3b 20 74 68 65 6e  ons[*]}" ]; then
06b0: 0a 09 6a 73 6f 6e 41 72 67 73 5b 22 6f 70 74 69  ..jsonArgs["opti
06c0: 6f 6e 73 22 5d 3d 22 24 7b 6f 70 74 69 6f 6e 73  ons"]="${options
06d0: 5b 40 5d 7d 22 0a 66 69 0a 0a 23 20 43 6f 6e 76  [@]}".fi..# Conv
06e0: 65 72 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e  ert arguments in
06f0: 74 6f 20 61 20 72 65 71 75 65 73 74 0a 6a 71 41  to a request.jqA
0700: 72 67 73 3d 28 29 0a 6a 71 53 65 74 74 69 6e 67  rgs=().jqSetting
0710: 73 3d 27 27 0a 66 6f 72 20 6a 73 6f 6e 41 72 67  s=''.for jsonArg
0720: 20 69 6e 20 22 24 7b 21 6a 73 6f 6e 41 72 67 73   in "${!jsonArgs
0730: 5b 40 5d 7d 22 3b 20 64 6f 0a 09 63 61 73 65 20  [@]}"; do..case 
0740: 22 24 7b 6a 73 6f 6e 41 72 67 7d 22 20 69 6e 0a  "${jsonArg}" in.
0750: 09 09 6f 70 74 69 6f 6e 73 29 0a 09 09 09 72 65  ..options)....re
0760: 71 75 65 73 74 41 72 72 61 79 3d 27 5b 5d 27 0a  questArray='[]'.
0770: 09 09 09 66 6f 72 20 76 61 6c 75 65 20 69 6e 20  ...for value in 
0780: 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a 73 6f  ${jsonArgs[${jso
0790: 6e 41 72 67 7d 5d 7d 3b 20 64 6f 0a 09 09 09 09  nArg}]}; do.....
07a0: 72 65 71 75 65 73 74 41 72 72 61 79 3d 22 24 28  requestArray="$(
07b0: 6a 71 20 2d 63 72 4d 20 2d 2d 61 72 67 20 76 61  jq -crM --arg va
07c0: 6c 75 65 20 22 24 7b 76 61 6c 75 65 7d 22 20 27  lue "${value}" '
07d0: 2e 20 2b 20 5b 20 24 76 61 6c 75 65 20 5d 27 20  . + [ $value ]' 
07e0: 3c 3c 3c 22 24 7b 72 65 71 75 65 73 74 41 72 72  <<<"${requestArr
07f0: 61 79 7d 22 29 22 0a 09 09 09 64 6f 6e 65 0a 09  ay}")"....done..
0800: 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d 61 72 67  ..jqArgs+=(--arg
0810: 6a 73 6f 6e 20 22 24 7b 6a 73 6f 6e 41 72 67 7d  json "${jsonArg}
0820: 22 20 22 24 7b 72 65 71 75 65 73 74 41 72 72 61  " "${requestArra
0830: 79 7d 22 29 0a 09 09 09 3b 3b 0a 09 09 2a 29 0a  y}")....;;...*).
0840: 09 09 09 6a 71 41 72 67 73 2b 3d 28 2d 2d 61 72  ...jqArgs+=(--ar
0850: 67 20 22 24 7b 6a 73 6f 6e 41 72 67 7d 22 20 22  g "${jsonArg}" "
0860: 24 7b 6a 73 6f 6e 41 72 67 73 5b 24 7b 6a 73 6f  ${jsonArgs[${jso
0870: 6e 41 72 67 7d 5d 7d 22 29 0a 09 09 09 3b 3b 0a  nArg}]}")....;;.
0880: 09 65 73 61 63 0a 0a 09 6a 71 53 65 74 74 69 6e  .esac...jqSettin
0890: 67 73 3d 22 24 7b 6a 71 53 65 74 74 69 6e 67 73  gs="${jqSettings
08a0: 7d 20 7c 20 2e 24 7b 6a 73 6f 6e 41 72 67 7d 20  } | .${jsonArg} 
08b0: 3d 20 5c 24 24 7b 6a 73 6f 6e 41 72 67 7d 22 0a  = \$${jsonArg}".
08c0: 64 6f 6e 65 0a 6a 71 41 72 67 73 2b 3d 28 22 24  done.jqArgs+=("$
08d0: 7b 6a 71 53 65 74 74 69 6e 67 73 3a 33 7d 22 29  {jqSettings:3}")
08e0: 0a 0a 6a 73 6f 6e 52 65 71 75 65 73 74 3d 22 24  ..jsonRequest="$
08f0: 28 6a 71 20 2d 63 72 4d 20 22 24 7b 6a 71 41 72  (jq -crM "${jqAr
0900: 67 73 5b 40 5d 7d 22 20 3c 3c 3c 27 7b 22 61 63  gs[@]}" <<<'{"ac
0910: 74 69 6f 6e 22 3a 22 62 75 69 6c 64 22 7d 27 29  tion":"build"}')
0920: 22 0a 0a 23 20 4d 61 6b 65 20 74 68 65 20 72 65  "..# Make the re
0930: 71 75 65 73 74 0a 72 65 73 75 6c 74 73 3d 22 24  quest.results="$
0940: 28 63 75 72 6c 20 2d 73 53 4c 20 2d 64 20 22 6a  (curl -sSL -d "j
0950: 73 6f 6e 3d 24 7b 6a 73 6f 6e 52 65 71 75 65 73  son=${jsonReques
0960: 74 7d 22 20 22 24 7b 65 6e 64 70 6f 69 6e 74 5f  t}" "${endpoint_
0970: 75 72 6c 7d 22 29 22 0a 75 72 6c 3d 22 24 28 6a  url}")".url="$(j
0980: 71 20 2d 63 72 4d 20 2e 75 72 6c 20 3c 3c 3c 22  q -crM .url <<<"
0990: 24 7b 72 65 73 75 6c 74 73 7d 22 29 22 0a 77 68  ${results}")".wh
09a0: 69 6c 65 20 74 72 75 65 3b 20 64 6f 0a 09 69 6e  ile true; do..in
09b0: 66 6f 3d 22 24 28 63 75 72 6c 20 2d 73 53 4c 20  fo="$(curl -sSL 
09c0: 22 24 7b 75 72 6c 7d 22 29 22 0a 09 74 65 72 6d  "${url}")"..term
09d0: 69 6e 61 6c 3d 22 24 28 6a 71 20 2d 63 72 4d 20  inal="$(jq -crM 
09e0: 2e 74 65 72 6d 69 6e 61 6c 20 3c 3c 3c 22 24 7b  .terminal <<<"${
09f0: 69 6e 66 6f 7d 22 29 22 0a 0a 09 69 66 20 5b 20  info}")"...if [ 
0a00: 22 24 7b 74 65 72 6d 69 6e 61 6c 7d 22 20 3d 20  "${terminal}" = 
0a10: 27 74 72 75 65 27 20 5d 3b 20 74 68 65 6e 0a 09  'true' ]; then..
0a20: 09 62 72 65 61 6b 0a 09 66 69 0a 0a 09 69 66 20  .break..fi...if 
0a30: 5b 20 2d 7a 20 22 24 7b 62 75 69 6c 64 53 74 61  [ -z "${buildSta
0a40: 74 75 73 57 72 6f 74 65 48 65 61 64 65 72 7d 22  tusWroteHeader}"
0a50: 20 5d 3b 20 74 68 65 6e 0a 09 09 62 75 69 6c 64   ]; then...build
0a60: 53 74 61 74 75 73 57 72 6f 74 65 48 65 61 64 65  StatusWroteHeade
0a70: 72 3d 27 31 27 0a 09 09 65 63 68 6f 20 2d 6e 20  r='1'...echo -n 
0a80: 27 42 75 69 6c 64 69 6e 67 2e 2e 2e 27 0a 09 66  'Building...'..f
0a90: 69 0a 0a 09 73 6c 65 65 70 20 33 30 0a 0a 09 65  i...sleep 30...e
0aa0: 63 68 6f 20 2d 6e 20 27 2e 27 0a 64 6f 6e 65 0a  cho -n '.'.done.
0ab0: 73 74 61 74 75 73 3d 22 24 28 6a 71 20 2d 63 72  status="$(jq -cr
0ac0: 4d 20 2e 73 74 61 74 75 73 20 3c 3c 3c 22 24 7b  M .status <<<"${
0ad0: 69 6e 66 6f 7d 22 29 22 0a 62 75 69 6c 64 5f 6c  info}")".build_l
0ae0: 6f 67 5f 75 72 6c 3d 22 24 28 6a 71 20 2d 63 72  og_url="$(jq -cr
0af0: 4d 20 2e 62 75 69 6c 64 5f 6c 6f 67 5f 75 72 6c  M .build_log_url
0b00: 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a   <<<"${info}")".
0b10: 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 62 75 69 6c  .if [ -n "${buil
0b20: 64 53 74 61 74 75 73 57 72 6f 74 65 48 65 61 64  dStatusWroteHead
0b30: 65 72 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63  er}" ]; then..ec
0b40: 68 6f 20 22 20 24 7b 73 74 61 74 75 73 7d 22 0a  ho " ${status}".
0b50: 66 69 0a 0a 69 66 20 5b 20 22 24 7b 73 74 61 74  fi..if [ "${stat
0b60: 75 73 7d 22 20 21 3d 20 22 63 6f 6d 70 6c 65 74  us}" != "complet
0b70: 65 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63 68 6f  e" ]; then..echo
0b80: 20 22 24 7b 73 74 61 74 75 73 7d 3a 20 42 75 69   "${status}: Bui
0b90: 6c 64 20 74 65 72 6d 69 6e 61 74 65 64 20 69 6e  ld terminated in
0ba0: 20 65 72 72 6f 72 22 20 3e 26 32 0a 09 69 66 20   error" >&2..if 
0bb0: 5b 20 22 24 7b 69 6e 74 65 72 6e 61 6c 4f 70 74  [ "${internalOpt
0bc0: 69 6f 6e 73 56 65 72 62 6f 73 65 7d 22 20 3d 20  ionsVerbose}" = 
0bd0: 27 74 72 75 65 27 20 5d 3b 20 74 68 65 6e 0a 09  'true' ]; then..
0be0: 09 63 75 72 6c 20 2d 73 53 4c 20 22 24 7b 62 75  .curl -sSL "${bu
0bf0: 69 6c 64 5f 6c 6f 67 5f 75 72 6c 7d 22 20 3e 26  ild_log_url}" >&
0c00: 32 0a 09 66 69 0a 0a 09 65 78 69 74 20 31 0a 66  2..fi...exit 1.f
0c10: 69 0a 0a 6b 69 74 5f 75 72 6c 3d 22 24 28 6a 71  i..kit_url="$(jq
0c20: 20 2d 63 72 4d 20 2e 6b 69 74 5f 75 72 6c 20 3c   -crM .kit_url <
0c30: 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 69 66  <<"${info}")".if
0c40: 20 5b 20 2d 7a 20 22 24 7b 6b 69 74 5f 66 69 6c   [ -z "${kit_fil
0c50: 65 6e 61 6d 65 7d 22 20 5d 3b 20 74 68 65 6e 0a  ename}" ]; then.
0c60: 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 22 24  .kit_filename="$
0c70: 7b 6b 69 74 5f 75 72 6c 2f 2f 2a 5c 2f 2f 7d 22  {kit_url//*\//}"
0c80: 0a 09 63 61 73 65 20 22 24 7b 6b 69 74 5f 66 69  ..case "${kit_fi
0c90: 6c 65 6e 61 6d 65 7d 22 20 69 6e 0a 09 09 2a 2e  lename}" in...*.
0ca0: 2a 29 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e 61  *)....kit_filena
0cb0: 6d 65 5f 62 61 73 65 3d 22 24 7b 6b 69 74 5f 66  me_base="${kit_f
0cc0: 69 6c 65 6e 61 6d 65 2f 2f 2e 2a 2f 7d 22 0a 09  ilename//.*/}"..
0cd0: 09 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 65  ..kit_filename_e
0ce0: 78 74 3d 22 2e 24 7b 6b 69 74 5f 66 69 6c 65 6e  xt=".${kit_filen
0cf0: 61 6d 65 2f 2f 2a 2e 2f 7d 22 0a 09 09 09 3b 3b  ame//*./}"....;;
0d00: 0a 09 09 2a 29 0a 09 09 09 6b 69 74 5f 66 69 6c  ...*)....kit_fil
0d10: 65 6e 61 6d 65 5f 62 61 73 65 3d 22 24 7b 6b 69  ename_base="${ki
0d20: 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 0a 09 09 09  t_filename}"....
0d30: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 65 78 74  kit_filename_ext
0d40: 3d 27 27 0a 09 09 09 3b 3b 0a 09 65 73 61 63 0a  =''....;;..esac.
0d50: 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 70 6c  .kit_filename_pl
0d60: 61 74 66 6f 72 6d 3d 22 24 28 6a 71 20 2d 63 72  atform="$(jq -cr
0d70: 4d 20 2e 70 6c 61 74 66 6f 72 6d 20 3c 3c 3c 22  M .platform <<<"
0d80: 24 7b 69 6e 66 6f 7d 22 29 22 0a 09 6b 69 74 5f  ${info}")"..kit_
0d90: 66 69 6c 65 6e 61 6d 65 5f 74 63 6c 5f 76 65 72  filename_tcl_ver
0da0: 73 69 6f 6e 3d 22 24 28 6a 71 20 2d 63 72 4d 20  sion="$(jq -crM 
0db0: 2e 74 63 6c 5f 76 65 72 73 69 6f 6e 20 3c 3c 3c  .tcl_version <<<
0dc0: 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 09 6b 69 74  "${info}")"..kit
0dd0: 5f 66 69 6c 65 6e 61 6d 65 3d 22 24 7b 6b 69 74  _filename="${kit
0de0: 5f 66 69 6c 65 6e 61 6d 65 5f 62 61 73 65 7d 2d  _filename_base}-
0df0: 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 70  ${kit_filename_p
0e00: 6c 61 74 66 6f 72 6d 7d 2d 24 7b 6b 69 74 5f 66  latform}-${kit_f
0e10: 69 6c 65 6e 61 6d 65 5f 74 63 6c 5f 76 65 72 73  ilename_tcl_vers
0e20: 69 6f 6e 7d 24 7b 6b 69 74 5f 66 69 6c 65 6e 61  ion}${kit_filena
0e30: 6d 65 5f 65 78 74 7d 22 0a 66 69 0a 0a 63 75 72  me_ext}".fi..cur
0e40: 6c 20 2d 73 53 4c 20 22 24 7b 6b 69 74 5f 75 72  l -sSL "${kit_ur
0e50: 6c 7d 22 20 3e 20 22 24 7b 6b 69 74 5f 66 69 6c  l}" > "${kit_fil
0e60: 65 6e 61 6d 65 7d 22 0a 63 68 6d 6f 64 20 37 35  ename}".chmod 75
0e70: 35 20 22 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d  5 "${kit_filenam
0e80: 65 7d 22 0a 0a 65 63 68 6f 20 22 57 72 6f 74 65  e}"..echo "Wrote
0e90: 3a 20 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  : ${kit_filename
0ea0: 7d 22 0a 65 78 69 74 20 30 0a                    }".exit 0.