@@ -473,6 +473,60 @@ if [ -n "$init_target" ]; then
473473 fi
474474fi
475475
476+ # ---------------------------------------------------------------------------
477+ # Install iii-worker (VM-based isolated worker runtime)
478+ # The worker needs glibc on Linux (for KVM/msb_krun) and is not available
479+ # for x86_64-apple-darwin (no firmware).
480+ # ---------------------------------------------------------------------------
481+ worker_target=" "
482+ case " $uname_s " in
483+ Linux)
484+ case " $arch " in
485+ x86_64) worker_target=" x86_64-unknown-linux-gnu" ;;
486+ aarch64) worker_target=" aarch64-unknown-linux-gnu" ;;
487+ esac
488+ ;;
489+ Darwin)
490+ case " $arch " in
491+ aarch64) worker_target=" aarch64-apple-darwin" ;;
492+ esac
493+ ;;
494+ esac
495+
496+ if [ -n " $worker_target " ]; then
497+ worker_asset_name=" iii-worker-${worker_target} .tar.gz"
498+
499+ if command -v jq > /dev/null 2>&1 ; then
500+ worker_asset_url=$( printf ' %s' " $json " \
501+ | jq -r --arg name " $worker_asset_name " \
502+ ' .assets[] | select(.name == $name) | .browser_download_url' \
503+ | head -n 1)
504+ else
505+ worker_asset_url=$( printf ' %s' " $json " \
506+ | grep -oE ' "browser_download_url"[[:space:]]*:[[:space:]]*"[^"]+"' \
507+ | sed -E ' s/.*"([^"]+)".*/\1/' \
508+ | grep -F " $worker_asset_name " \
509+ | head -n 1)
510+ fi
511+
512+ if [ -n " $worker_asset_url " ]; then
513+ curl -fsSL -L " $worker_asset_url " -o " $tmpdir /$worker_asset_name " 2> /dev/null
514+ if [ $? -eq 0 ]; then
515+ tar -xzf " $tmpdir /$worker_asset_name " -C " $tmpdir " 2> /dev/null
516+ worker_bin_file=$( find " $tmpdir " -type f -name " iii-worker" | head -n 1)
517+ if [ -n " $worker_bin_file " ] && [ -f " $worker_bin_file " ]; then
518+ if command -v install > /dev/null 2>&1 ; then
519+ install -m 755 " $worker_bin_file " " $bin_dir /iii-worker"
520+ else
521+ cp " $worker_bin_file " " $bin_dir /iii-worker"
522+ chmod 755 " $bin_dir /iii-worker"
523+ fi
524+ printf ' installed %s to %s\n' " iii-worker" " $bin_dir /iii-worker"
525+ fi
526+ fi
527+ fi
528+ fi
529+
476530if [ " $install_event_prefix " = " upgrade" ]; then
477531 payload=$( printf ' {"from_version":%s,"to_version":%s,"install_method":"sh","target_binary":%s}' \
478532 " $( json_str " $from_version " ) " " $( json_str " $installed_version " ) " " $( json_str " $BIN_NAME " ) " )
0 commit comments