From 02bef9080c624d5ad65b3a0ace493335234c6243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Wed, 6 May 2026 20:46:46 +0900 Subject: [PATCH] Add download progress pulse to install entrypoint --- install.sh | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index bd8abe6..7be395c 100644 --- a/install.sh +++ b/install.sh @@ -11,6 +11,7 @@ set -euo pipefail INSTALL_URL="${VIRTUALITY_BOOTSTRAP_URL:-https://raw.githubusercontent.com/viktor138irk/virtuality/main/bootstrap.sh}" TMP_FILE="/tmp/virtuality-install-$$.sh" +DOWNLOAD_LOG="/tmp/virtuality-install-download-$$.log" ESC="\033" RESET="${ESC}[0m" @@ -21,13 +22,38 @@ CYAN="${ESC}[36m" GRAY="${ESC}[90m" cleanup() { - rm -f "$TMP_FILE" 2>/dev/null || true + rm -f "$TMP_FILE" "$DOWNLOAD_LOG" 2>/dev/null || true } trap cleanup EXIT ok() { echo -e "${GREEN}✓${RESET} $*"; } fail() { echo -e "${RED}✗${RESET} $*"; exit 1; } +run_with_pulse() { + local text="$1" + shift + local pid code start_ts elapsed i symbol + local spinner=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏") + + "$@" >"$DOWNLOAD_LOG" 2>&1 & + pid=$! + start_ts="$(date +%s)" + i=0 + + while kill -0 "$pid" 2>/dev/null; do + elapsed=$(( $(date +%s) - start_ts )) + symbol="${spinner[$((i % ${#spinner[@]}))]}" + printf "\r ${CYAN}%s${RESET} %s... ${GRAY}%ss${RESET} ${GRAY}(%s)${RESET}" "$symbol" "$text" "$elapsed" "$INSTALL_URL" + sleep 1 + i=$((i + 1)) + done + + wait "$pid" + code=$? + printf "\r%*s\r" 140 "" + return "$code" +} + cat </dev/null 2>&1; then - curl -fL --show-error "$INSTALL_URL" -o "$TMP_FILE" || fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." + if run_with_pulse "Скачиваем bootstrap" curl -fL --show-error "$INSTALL_URL" -o "$TMP_FILE"; then + ok "Установщик скачан: $TMP_FILE" + else + cat "$DOWNLOAD_LOG" 2>/dev/null || true + fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." + fi elif command -v wget >/dev/null 2>&1; then - wget -O "$TMP_FILE" "$INSTALL_URL" || fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." + if run_with_pulse "Скачиваем bootstrap" wget -O "$TMP_FILE" "$INSTALL_URL"; then + ok "Установщик скачан: $TMP_FILE" + else + cat "$DOWNLOAD_LOG" 2>/dev/null || true + fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." + fi else fail "Нужен curl или wget для загрузки установщика Virtuality." fi @@ -49,7 +85,6 @@ if [[ ! -s "$TMP_FILE" ]]; then fi chmod +x "$TMP_FILE" -ok "Установщик скачан: $TMP_FILE" echo echo "[2/3] Проверяем режим запуска..."