Hex Artifact Content

Artifact fe769d0473726600d5e3240ebb1953bfb592822d:


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 53 65 74 20 61 72 67 75 6d 65 6e 74 73  .# Set arguments
0070: 0a 64 65 63 6c 61 72 65 20 2d 41 20 6a 73 6f 6e  .declare -A json
0080: 41 72 67 73 0a 6a 73 6f 6e 41 72 67 73 5b 22 70  Args.jsonArgs["p
0090: 6c 61 74 66 6f 72 6d 22 5d 3d 22 24 28 75 6e 61  latform"]="$(una
00a0: 6d 65 20 2d 73 29 2d 24 28 75 6e 61 6d 65 20 2d  me -s)-$(uname -
00b0: 6d 29 22 0a 0a 6e 65 78 74 41 72 67 3d 27 27 0a  m)"..nextArg=''.
00c0: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 27 27 0a  kit_filename=''.
00d0: 66 6f 72 20 61 72 67 20 69 6e 20 22 24 40 22 3b  for arg in "$@";
00e0: 20 64 6f 0a 09 69 66 20 5b 20 2d 6e 20 22 24 7b   do..if [ -n "${
00f0: 6e 65 78 74 41 72 67 7d 22 20 5d 3b 20 74 68 65  nextArg}" ]; the
0100: 6e 0a 09 09 6a 73 6f 6e 41 72 67 73 5b 22 24 7b  n...jsonArgs["${
0110: 6e 65 78 74 41 72 67 7d 22 5d 3d 22 24 7b 61 72  nextArg}"]="${ar
0120: 67 7d 22 0a 09 09 6e 65 78 74 41 72 67 3d 27 27  g}"...nextArg=''
0130: 0a 09 09 63 6f 6e 74 69 6e 75 65 0a 09 66 69 0a  ...continue..fi.
0140: 0a 09 63 61 73 65 20 22 24 7b 61 72 67 7d 22 20  ..case "${arg}" 
0150: 69 6e 0a 09 09 2d 2d 70 6c 61 74 66 6f 72 6d 7c  in...--platform|
0160: 2d 2d 74 63 6c 2d 76 65 72 73 69 6f 6e 7c 2d 2d  --tcl-version|--
0170: 6b 69 74 63 72 65 61 74 6f 72 2d 76 65 72 73 69  kitcreator-versi
0180: 6f 6e 29 0a 09 09 09 6e 65 78 74 41 72 67 3d 22  on)....nextArg="
0190: 24 7b 61 72 67 3a 32 7d 22 0a 09 09 09 6e 65 78  ${arg:2}"....nex
01a0: 74 41 72 67 3d 22 24 7b 6e 65 78 74 41 72 67 2f  tArg="${nextArg/
01b0: 2f 2d 2f 5f 7d 22 0a 09 09 09 3b 3b 0a 09 65 73  /-/_}"....;;..es
01c0: 61 63 0a 64 6f 6e 65 0a 0a 23 20 43 6f 6e 76 65  ac.done..# Conve
01d0: 72 74 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 74  rt arguments int
01e0: 6f 20 61 20 72 65 71 75 65 73 74 0a 6a 71 41 72  o a request.jqAr
01f0: 67 73 3d 28 29 0a 6a 71 53 65 74 74 69 6e 67 73  gs=().jqSettings
0200: 3d 27 27 0a 66 6f 72 20 6a 73 6f 6e 41 72 67 20  =''.for jsonArg 
0210: 69 6e 20 22 24 7b 21 6a 73 6f 6e 41 72 67 73 5b  in "${!jsonArgs[
0220: 40 5d 7d 22 3b 20 64 6f 0a 09 6a 71 41 72 67 73  @]}"; do..jqArgs
0230: 2b 3d 28 2d 2d 61 72 67 20 22 24 7b 6a 73 6f 6e  +=(--arg "${json
0240: 41 72 67 7d 22 20 22 24 7b 6a 73 6f 6e 41 72 67  Arg}" "${jsonArg
0250: 73 5b 24 7b 6a 73 6f 6e 41 72 67 7d 5d 7d 22 29  s[${jsonArg}]}")
0260: 0a 09 6a 71 53 65 74 74 69 6e 67 73 3d 22 24 7b  ..jqSettings="${
0270: 6a 71 53 65 74 74 69 6e 67 73 7d 20 7c 20 2e 24  jqSettings} | .$
0280: 7b 6a 73 6f 6e 41 72 67 7d 20 3d 20 5c 24 24 7b  {jsonArg} = \$${
0290: 6a 73 6f 6e 41 72 67 7d 22 0a 64 6f 6e 65 0a 6a  jsonArg}".done.j
02a0: 71 41 72 67 73 2b 3d 28 22 24 7b 6a 71 53 65 74  qArgs+=("${jqSet
02b0: 74 69 6e 67 73 3a 33 7d 22 29 0a 0a 6a 73 6f 6e  tings:3}")..json
02c0: 52 65 71 75 65 73 74 3d 22 24 28 6a 71 20 2d 63  Request="$(jq -c
02d0: 72 4d 20 22 24 7b 6a 71 41 72 67 73 5b 40 5d 7d  rM "${jqArgs[@]}
02e0: 22 20 3c 3c 3c 27 7b 22 61 63 74 69 6f 6e 22 3a  " <<<'{"action":
02f0: 22 62 75 69 6c 64 22 7d 27 29 22 0a 0a 23 20 4d  "build"}')"..# M
0300: 61 6b 65 20 74 68 65 20 72 65 71 75 65 73 74 0a  ake the request.
0310: 72 65 73 75 6c 74 73 3d 22 24 28 63 75 72 6c 20  results="$(curl 
0320: 2d 73 53 4c 20 2d 64 20 22 6a 73 6f 6e 3d 24 7b  -sSL -d "json=${
0330: 6a 73 6f 6e 52 65 71 75 65 73 74 7d 22 20 22 24  jsonRequest}" "$
0340: 7b 65 6e 64 70 6f 69 6e 74 5f 75 72 6c 7d 22 29  {endpoint_url}")
0350: 22 0a 75 72 6c 3d 22 24 28 6a 71 20 2d 63 72 4d  ".url="$(jq -crM
0360: 20 2e 75 72 6c 20 3c 3c 3c 22 24 7b 72 65 73 75   .url <<<"${resu
0370: 6c 74 73 7d 22 29 22 0a 77 68 69 6c 65 20 74 72  lts}")".while tr
0380: 75 65 3b 20 64 6f 0a 09 69 6e 66 6f 3d 22 24 28  ue; do..info="$(
0390: 63 75 72 6c 20 2d 73 53 4c 20 22 24 7b 75 72 6c  curl -sSL "${url
03a0: 7d 22 29 22 0a 09 74 65 72 6d 69 6e 61 6c 3d 22  }")"..terminal="
03b0: 24 28 6a 71 20 2d 63 72 4d 20 2e 74 65 72 6d 69  $(jq -crM .termi
03c0: 6e 61 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22  nal <<<"${info}"
03d0: 29 22 0a 0a 09 69 66 20 5b 20 22 24 7b 74 65 72  )"...if [ "${ter
03e0: 6d 69 6e 61 6c 7d 22 20 3d 20 27 74 72 75 65 27  minal}" = 'true'
03f0: 20 5d 3b 20 74 68 65 6e 0a 09 09 62 72 65 61 6b   ]; then...break
0400: 0a 09 66 69 0a 0a 09 73 6c 65 65 70 20 33 30 0a  ..fi...sleep 30.
0410: 64 6f 6e 65 0a 0a 73 74 61 74 75 73 3d 22 24 28  done..status="$(
0420: 6a 71 20 2d 63 72 4d 20 2e 73 74 61 74 75 73 20  jq -crM .status 
0430: 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 69  <<<"${info}")".i
0440: 66 20 5b 20 22 24 7b 73 74 61 74 75 73 7d 22 20  f [ "${status}" 
0450: 21 3d 20 22 63 6f 6d 70 6c 65 74 65 22 20 5d 3b  != "complete" ];
0460: 20 74 68 65 6e 0a 09 65 63 68 6f 20 22 66 61 69   then..echo "fai
0470: 6c 65 64 3a 20 24 7b 73 74 61 74 75 73 7d 22 20  led: ${status}" 
0480: 3e 26 32 0a 0a 09 65 78 69 74 20 31 0a 66 69 0a  >&2...exit 1.fi.
0490: 0a 6b 69 74 5f 75 72 6c 3d 22 24 28 6a 71 20 2d  .kit_url="$(jq -
04a0: 63 72 4d 20 2e 6b 69 74 5f 75 72 6c 20 3c 3c 3c  crM .kit_url <<<
04b0: 22 24 7b 69 6e 66 6f 7d 22 29 22 0a 69 66 20 5b  "${info}")".if [
04c0: 20 2d 7a 20 22 24 7b 6b 69 74 5f 66 69 6c 65 6e   -z "${kit_filen
04d0: 61 6d 65 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 6b  ame}" ]; then..k
04e0: 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 22 24 7b 6b  it_filename="${k
04f0: 69 74 5f 75 72 6c 2f 2f 2a 5c 2f 2f 7d 22 0a 09  it_url//*\//}"..
0500: 63 61 73 65 20 22 24 7b 6b 69 74 5f 66 69 6c 65  case "${kit_file
0510: 6e 61 6d 65 7d 22 20 69 6e 0a 09 09 2a 2e 2a 29  name}" in...*.*)
0520: 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  ....kit_filename
0530: 5f 62 61 73 65 3d 22 24 7b 6b 69 74 5f 66 69 6c  _base="${kit_fil
0540: 65 6e 61 6d 65 2f 2f 2e 2a 2f 7d 22 0a 09 09 09  ename//.*/}"....
0550: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 65 78 74  kit_filename_ext
0560: 3d 22 2e 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d  =".${kit_filenam
0570: 65 2f 2f 2a 2e 2f 7d 22 0a 09 09 09 3b 3b 0a 09  e//*./}"....;;..
0580: 09 2a 29 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e  .*)....kit_filen
0590: 61 6d 65 5f 62 61 73 65 3d 22 24 7b 6b 69 74 5f  ame_base="${kit_
05a0: 66 69 6c 65 6e 61 6d 65 7d 22 0a 09 09 09 6b 69  filename}"....ki
05b0: 74 5f 66 69 6c 65 6e 61 6d 65 5f 65 78 74 3d 27  t_filename_ext='
05c0: 27 0a 09 09 09 3b 3b 0a 09 65 73 61 63 0a 09 6b  '....;;..esac..k
05d0: 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 70 6c 61 74  it_filename_plat
05e0: 66 6f 72 6d 3d 22 24 28 6a 71 20 2d 63 72 4d 20  form="$(jq -crM 
05f0: 2e 70 6c 61 74 66 6f 72 6d 20 3c 3c 3c 22 24 7b  .platform <<<"${
0600: 69 6e 66 6f 7d 22 29 22 0a 09 6b 69 74 5f 66 69  info}")"..kit_fi
0610: 6c 65 6e 61 6d 65 5f 74 63 6c 5f 76 65 72 73 69  lename_tcl_versi
0620: 6f 6e 3d 22 24 28 6a 71 20 2d 63 72 4d 20 2e 74  on="$(jq -crM .t
0630: 63 6c 5f 76 65 72 73 69 6f 6e 20 3c 3c 3c 22 24  cl_version <<<"$
0640: 7b 69 6e 66 6f 7d 22 29 22 0a 09 6b 69 74 5f 66  {info}")"..kit_f
0650: 69 6c 65 6e 61 6d 65 3d 22 24 7b 6b 69 74 5f 66  ilename="${kit_f
0660: 69 6c 65 6e 61 6d 65 5f 62 61 73 65 7d 2d 24 7b  ilename_base}-${
0670: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 70 6c 61  kit_filename_pla
0680: 74 66 6f 72 6d 7d 2d 24 7b 6b 69 74 5f 66 69 6c  tform}-${kit_fil
0690: 65 6e 61 6d 65 5f 74 63 6c 5f 76 65 72 73 69 6f  ename_tcl_versio
06a0: 6e 7d 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65  n}${kit_filename
06b0: 5f 65 78 74 7d 22 0a 66 69 0a 0a 63 75 72 6c 20  _ext}".fi..curl 
06c0: 2d 73 53 4c 20 22 24 7b 6b 69 74 5f 75 72 6c 7d  -sSL "${kit_url}
06d0: 22 20 3e 20 22 24 7b 6b 69 74 5f 66 69 6c 65 6e  " > "${kit_filen
06e0: 61 6d 65 7d 22 0a 63 68 6d 6f 64 20 37 35 35 20  ame}".chmod 755 
06f0: 22 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 7d  "${kit_filename}
0700: 22 0a 0a 65 63 68 6f 20 22 57 72 6f 74 65 3a 20  "..echo "Wrote: 
0710: 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22  ${kit_filename}"
0720: 0a 65 78 69 74 20 30 0a                          .exit 0.