Hex Artifact Content

Artifact 172cc868bc6e3e273b9e66a58ad77ed57ccda6ba:


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: 6f 70 74 69 6f 6e 73 3d 28 29 0a 66 6f 72 20 61  options=().for a
00e0: 72 67 20 69 6e 20 22 24 40 22 3b 20 64 6f 0a 09  rg in "$@"; do..
00f0: 69 66 20 5b 20 2d 6e 20 22 24 7b 6e 65 78 74 41  if [ -n "${nextA
0100: 72 67 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 6a  rg}" ]; then...j
0110: 73 6f 6e 41 72 67 73 5b 22 24 7b 6e 65 78 74 41  sonArgs["${nextA
0120: 72 67 7d 22 5d 3d 22 24 7b 61 72 67 7d 22 0a 09  rg}"]="${arg}"..
0130: 09 6e 65 78 74 41 72 67 3d 27 27 0a 09 09 63 6f  .nextArg=''...co
0140: 6e 74 69 6e 75 65 0a 09 66 69 0a 0a 09 63 61 73  ntinue..fi...cas
0150: 65 20 22 24 7b 61 72 67 7d 22 20 69 6e 0a 09 09  e "${arg}" in...
0160: 2d 2d 70 6c 61 74 66 6f 72 6d 7c 2d 2d 74 63 6c  --platform|--tcl
0170: 2d 76 65 72 73 69 6f 6e 7c 2d 2d 6b 69 74 63 72  -version|--kitcr
0180: 65 61 74 6f 72 2d 76 65 72 73 69 6f 6e 29 0a 09  eator-version)..
0190: 09 09 6e 65 78 74 41 72 67 3d 22 24 7b 61 72 67  ..nextArg="${arg
01a0: 3a 32 7d 22 0a 09 09 09 6e 65 78 74 41 72 67 3d  :2}"....nextArg=
01b0: 22 24 7b 6e 65 78 74 41 72 67 2f 2f 2d 2f 5f 7d  "${nextArg//-/_}
01c0: 22 0a 09 09 09 3b 3b 0a 09 09 2d 2d 6b 69 74 64  "....;;...--kitd
01d0: 6c 6c 7c 2d 2d 74 68 72 65 61 64 65 64 29 0a 09  ll|--threaded)..
01e0: 09 09 6f 70 74 69 6f 6e 73 2b 3d 28 22 24 7b 61  ..options+=("${a
01f0: 72 67 3a 32 7d 22 29 0a 09 09 09 3b 3b 0a 09 65  rg:2}")....;;..e
0200: 73 61 63 0a 64 6f 6e 65 0a 0a 69 66 20 5b 20 2d  sac.done..if [ -
0210: 6e 20 22 24 7b 6f 70 74 69 6f 6e 73 5b 2a 5d 7d  n "${options[*]}
0220: 22 20 5d 3b 20 74 68 65 6e 0a 09 6a 73 6f 6e 41  " ]; then..jsonA
0230: 72 67 73 5b 22 6f 70 74 69 6f 6e 73 22 5d 3d 22  rgs["options"]="
0240: 24 7b 6f 70 74 69 6f 6e 73 5b 40 5d 7d 22 0a 66  ${options[@]}".f
0250: 69 0a 0a 23 20 43 6f 6e 76 65 72 74 20 61 72 67  i..# Convert arg
0260: 75 6d 65 6e 74 73 20 69 6e 74 6f 20 61 20 72 65  uments into a re
0270: 71 75 65 73 74 0a 6a 71 41 72 67 73 3d 28 29 0a  quest.jqArgs=().
0280: 6a 71 53 65 74 74 69 6e 67 73 3d 27 27 0a 66 6f  jqSettings=''.fo
0290: 72 20 6a 73 6f 6e 41 72 67 20 69 6e 20 22 24 7b  r jsonArg in "${
02a0: 21 6a 73 6f 6e 41 72 67 73 5b 40 5d 7d 22 3b 20  !jsonArgs[@]}"; 
02b0: 64 6f 0a 09 63 61 73 65 20 22 24 7b 6a 73 6f 6e  do..case "${json
02c0: 41 72 67 7d 22 20 69 6e 0a 09 09 6f 70 74 69 6f  Arg}" in...optio
02d0: 6e 73 29 0a 09 09 09 72 65 71 75 65 73 74 41 72  ns)....requestAr
02e0: 72 61 79 3d 27 5b 5d 27 0a 09 09 09 66 6f 72 20  ray='[]'....for 
02f0: 76 61 6c 75 65 20 69 6e 20 24 7b 6a 73 6f 6e 41  value in ${jsonA
0300: 72 67 73 5b 24 7b 6a 73 6f 6e 41 72 67 7d 5d 7d  rgs[${jsonArg}]}
0310: 3b 20 64 6f 0a 09 09 09 09 72 65 71 75 65 73 74  ; do.....request
0320: 41 72 72 61 79 3d 22 24 28 6a 71 20 2d 63 72 4d  Array="$(jq -crM
0330: 20 2d 2d 61 72 67 20 76 61 6c 75 65 20 22 24 7b   --arg value "${
0340: 76 61 6c 75 65 7d 22 20 27 2e 20 2b 20 5b 20 24  value}" '. + [ $
0350: 76 61 6c 75 65 20 5d 27 20 3c 3c 3c 22 24 7b 72  value ]' <<<"${r
0360: 65 71 75 65 73 74 41 72 72 61 79 7d 22 29 22 0a  equestArray}")".
0370: 09 09 09 64 6f 6e 65 0a 09 09 09 6a 71 41 72 67  ...done....jqArg
0380: 73 2b 3d 28 2d 2d 61 72 67 6a 73 6f 6e 20 22 24  s+=(--argjson "$
0390: 7b 6a 73 6f 6e 41 72 67 7d 22 20 22 24 7b 72 65  {jsonArg}" "${re
03a0: 71 75 65 73 74 41 72 72 61 79 7d 22 29 0a 09 09  questArray}")...
03b0: 09 3b 3b 0a 09 09 2a 29 0a 09 09 09 6a 71 41 72  .;;...*)....jqAr
03c0: 67 73 2b 3d 28 2d 2d 61 72 67 20 22 24 7b 6a 73  gs+=(--arg "${js
03d0: 6f 6e 41 72 67 7d 22 20 22 24 7b 6a 73 6f 6e 41  onArg}" "${jsonA
03e0: 72 67 73 5b 24 7b 6a 73 6f 6e 41 72 67 7d 5d 7d  rgs[${jsonArg}]}
03f0: 22 29 0a 09 09 09 3b 3b 0a 09 65 73 61 63 0a 0a  ")....;;..esac..
0400: 09 6a 71 53 65 74 74 69 6e 67 73 3d 22 24 7b 6a  .jqSettings="${j
0410: 71 53 65 74 74 69 6e 67 73 7d 20 7c 20 2e 24 7b  qSettings} | .${
0420: 6a 73 6f 6e 41 72 67 7d 20 3d 20 5c 24 24 7b 6a  jsonArg} = \$${j
0430: 73 6f 6e 41 72 67 7d 22 0a 64 6f 6e 65 0a 6a 71  sonArg}".done.jq
0440: 41 72 67 73 2b 3d 28 22 24 7b 6a 71 53 65 74 74  Args+=("${jqSett
0450: 69 6e 67 73 3a 33 7d 22 29 0a 0a 6a 73 6f 6e 52  ings:3}")..jsonR
0460: 65 71 75 65 73 74 3d 22 24 28 6a 71 20 2d 63 72  equest="$(jq -cr
0470: 4d 20 22 24 7b 6a 71 41 72 67 73 5b 40 5d 7d 22  M "${jqArgs[@]}"
0480: 20 3c 3c 3c 27 7b 22 61 63 74 69 6f 6e 22 3a 22   <<<'{"action":"
0490: 62 75 69 6c 64 22 7d 27 29 22 0a 0a 23 20 4d 61  build"}')"..# Ma
04a0: 6b 65 20 74 68 65 20 72 65 71 75 65 73 74 0a 72  ke the request.r
04b0: 65 73 75 6c 74 73 3d 22 24 28 63 75 72 6c 20 2d  esults="$(curl -
04c0: 73 53 4c 20 2d 64 20 22 6a 73 6f 6e 3d 24 7b 6a  sSL -d "json=${j
04d0: 73 6f 6e 52 65 71 75 65 73 74 7d 22 20 22 24 7b  sonRequest}" "${
04e0: 65 6e 64 70 6f 69 6e 74 5f 75 72 6c 7d 22 29 22  endpoint_url}")"
04f0: 0a 75 72 6c 3d 22 24 28 6a 71 20 2d 63 72 4d 20  .url="$(jq -crM 
0500: 2e 75 72 6c 20 3c 3c 3c 22 24 7b 72 65 73 75 6c  .url <<<"${resul
0510: 74 73 7d 22 29 22 0a 77 68 69 6c 65 20 74 72 75  ts}")".while tru
0520: 65 3b 20 64 6f 0a 09 69 6e 66 6f 3d 22 24 28 63  e; do..info="$(c
0530: 75 72 6c 20 2d 73 53 4c 20 22 24 7b 75 72 6c 7d  url -sSL "${url}
0540: 22 29 22 0a 09 74 65 72 6d 69 6e 61 6c 3d 22 24  ")"..terminal="$
0550: 28 6a 71 20 2d 63 72 4d 20 2e 74 65 72 6d 69 6e  (jq -crM .termin
0560: 61 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29  al <<<"${info}")
0570: 22 0a 0a 09 69 66 20 5b 20 22 24 7b 74 65 72 6d  "...if [ "${term
0580: 69 6e 61 6c 7d 22 20 3d 20 27 74 72 75 65 27 20  inal}" = 'true' 
0590: 5d 3b 20 74 68 65 6e 0a 09 09 62 72 65 61 6b 0a  ]; then...break.
05a0: 09 66 69 0a 0a 09 69 66 20 5b 20 2d 7a 20 22 24  .fi...if [ -z "$
05b0: 7b 62 75 69 6c 64 53 74 61 74 75 73 57 72 6f 74  {buildStatusWrot
05c0: 65 48 65 61 64 65 72 7d 22 20 5d 3b 20 74 68 65  eHeader}" ]; the
05d0: 6e 0a 09 09 62 75 69 6c 64 53 74 61 74 75 73 57  n...buildStatusW
05e0: 72 6f 74 65 48 65 61 64 65 72 3d 27 31 27 0a 09  roteHeader='1'..
05f0: 09 65 63 68 6f 20 2d 6e 20 27 42 75 69 6c 64 69  .echo -n 'Buildi
0600: 6e 67 2e 2e 2e 27 0a 09 66 69 0a 0a 09 73 6c 65  ng...'..fi...sle
0610: 65 70 20 33 30 0a 0a 09 65 63 68 6f 20 2d 6e 20  ep 30...echo -n 
0620: 27 2e 27 0a 64 6f 6e 65 0a 73 74 61 74 75 73 3d  '.'.done.status=
0630: 22 24 28 6a 71 20 2d 63 72 4d 20 2e 73 74 61 74  "$(jq -crM .stat
0640: 75 73 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29  us <<<"${info}")
0650: 22 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 62 75  "..if [ -n "${bu
0660: 69 6c 64 53 74 61 74 75 73 57 72 6f 74 65 48 65  ildStatusWroteHe
0670: 61 64 65 72 7d 22 20 5d 3b 20 74 68 65 6e 0a 09  ader}" ]; then..
0680: 65 63 68 6f 20 22 20 24 7b 73 74 61 74 75 73 7d  echo " ${status}
0690: 22 0a 66 69 0a 0a 69 66 20 5b 20 22 24 7b 73 74  ".fi..if [ "${st
06a0: 61 74 75 73 7d 22 20 21 3d 20 22 63 6f 6d 70 6c  atus}" != "compl
06b0: 65 74 65 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63  ete" ]; then..ec
06c0: 68 6f 20 22 66 61 69 6c 65 64 3a 20 24 7b 73 74  ho "failed: ${st
06d0: 61 74 75 73 7d 22 20 3e 26 32 0a 0a 09 65 78 69  atus}" >&2...exi
06e0: 74 20 31 0a 66 69 0a 0a 6b 69 74 5f 75 72 6c 3d  t 1.fi..kit_url=
06f0: 22 24 28 6a 71 20 2d 63 72 4d 20 2e 6b 69 74 5f  "$(jq -crM .kit_
0700: 75 72 6c 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22  url <<<"${info}"
0710: 29 22 0a 69 66 20 5b 20 2d 7a 20 22 24 7b 6b 69  )".if [ -z "${ki
0720: 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 20 5d 3b 20  t_filename}" ]; 
0730: 74 68 65 6e 0a 09 6b 69 74 5f 66 69 6c 65 6e 61  then..kit_filena
0740: 6d 65 3d 22 24 7b 6b 69 74 5f 75 72 6c 2f 2f 2a  me="${kit_url//*
0750: 5c 2f 2f 7d 22 0a 09 63 61 73 65 20 22 24 7b 6b  \//}"..case "${k
0760: 69 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 20 69 6e  it_filename}" in
0770: 0a 09 09 2a 2e 2a 29 0a 09 09 09 6b 69 74 5f 66  ...*.*)....kit_f
0780: 69 6c 65 6e 61 6d 65 5f 62 61 73 65 3d 22 24 7b  ilename_base="${
0790: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 2f 2f 2e 2a  kit_filename//.*
07a0: 2f 7d 22 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e  /}"....kit_filen
07b0: 61 6d 65 5f 65 78 74 3d 22 2e 24 7b 6b 69 74 5f  ame_ext=".${kit_
07c0: 66 69 6c 65 6e 61 6d 65 2f 2f 2a 2e 2f 7d 22 0a  filename//*./}".
07d0: 09 09 09 3b 3b 0a 09 09 2a 29 0a 09 09 09 6b 69  ...;;...*)....ki
07e0: 74 5f 66 69 6c 65 6e 61 6d 65 5f 62 61 73 65 3d  t_filename_base=
07f0: 22 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 7d  "${kit_filename}
0800: 22 0a 09 09 09 6b 69 74 5f 66 69 6c 65 6e 61 6d  "....kit_filenam
0810: 65 5f 65 78 74 3d 27 27 0a 09 09 09 3b 3b 0a 09  e_ext=''....;;..
0820: 65 73 61 63 0a 09 6b 69 74 5f 66 69 6c 65 6e 61  esac..kit_filena
0830: 6d 65 5f 70 6c 61 74 66 6f 72 6d 3d 22 24 28 6a  me_platform="$(j
0840: 71 20 2d 63 72 4d 20 2e 70 6c 61 74 66 6f 72 6d  q -crM .platform
0850: 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22 0a   <<<"${info}")".
0860: 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 74 63  .kit_filename_tc
0870: 6c 5f 76 65 72 73 69 6f 6e 3d 22 24 28 6a 71 20  l_version="$(jq 
0880: 2d 63 72 4d 20 2e 74 63 6c 5f 76 65 72 73 69 6f  -crM .tcl_versio
0890: 6e 20 3c 3c 3c 22 24 7b 69 6e 66 6f 7d 22 29 22  n <<<"${info}")"
08a0: 0a 09 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 3d 22  ..kit_filename="
08b0: 24 7b 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 62  ${kit_filename_b
08c0: 61 73 65 7d 2d 24 7b 6b 69 74 5f 66 69 6c 65 6e  ase}-${kit_filen
08d0: 61 6d 65 5f 70 6c 61 74 66 6f 72 6d 7d 2d 24 7b  ame_platform}-${
08e0: 6b 69 74 5f 66 69 6c 65 6e 61 6d 65 5f 74 63 6c  kit_filename_tcl
08f0: 5f 76 65 72 73 69 6f 6e 7d 24 7b 6b 69 74 5f 66  _version}${kit_f
0900: 69 6c 65 6e 61 6d 65 5f 65 78 74 7d 22 0a 66 69  ilename_ext}".fi
0910: 0a 0a 63 75 72 6c 20 2d 73 53 4c 20 22 24 7b 6b  ..curl -sSL "${k
0920: 69 74 5f 75 72 6c 7d 22 20 3e 20 22 24 7b 6b 69  it_url}" > "${ki
0930: 74 5f 66 69 6c 65 6e 61 6d 65 7d 22 0a 63 68 6d  t_filename}".chm
0940: 6f 64 20 37 35 35 20 22 24 7b 6b 69 74 5f 66 69  od 755 "${kit_fi
0950: 6c 65 6e 61 6d 65 7d 22 0a 0a 65 63 68 6f 20 22  lename}"..echo "
0960: 57 72 6f 74 65 3a 20 24 7b 6b 69 74 5f 66 69 6c  Wrote: ${kit_fil
0970: 65 6e 61 6d 65 7d 22 0a 65 78 69 74 20 30 0a     ename}".exit 0.