From ca92735c55e0c636808e7a3c6617b0f448d794b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Fri, 5 Jun 2026 18:01:17 +0300 Subject: [PATCH] fix: support noninteractive install --- install.sh | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index 9c9abaf..bd3860c 100755 --- a/install.sh +++ b/install.sh @@ -2,7 +2,8 @@ # WARP Web UI — установка одной командой (Debian/Ubuntu, от root) set -euo pipefail -REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SCRIPT_PATH="${BASH_SOURCE[0]:-$0}" +REPO_DIR="$(cd "$(dirname "${SCRIPT_PATH}")" && pwd)" INSTALL_DIR="${WARP_WEBUI_INSTALL_DIR:-/opt/warp-webui}" ENV_FILE="/etc/default/warp-webui" SERVICE_NAME="warp-webui" @@ -43,6 +44,9 @@ fi prompt() { local var_name="$1" prompt_text="$2" default_val="$3" local input + if [[ -n "${!var_name:-}" ]]; then + return 0 + fi read -rp "${prompt_text} [${default_val}]: " input if [[ -z "${input}" ]]; then printf -v "${var_name}" '%s' "${default_val}" @@ -67,14 +71,19 @@ fi prompt WARP_WEBUI_USER "Логин администратора веб-панели" "warpadmin" -while true; do - read -rsp "Пароль администратора (минимум 8 символов): " WARP_WEBUI_PASS - echo - if [[ "${#WARP_WEBUI_PASS}" -ge 8 ]]; then - break - fi - echo "Пароль слишком короткий. Нужно не менее 8 символов." -done +if [[ -z "${WARP_WEBUI_PASS:-}" ]]; then + while true; do + read -rsp "Пароль администратора (минимум 8 символов): " WARP_WEBUI_PASS + echo + if [[ "${#WARP_WEBUI_PASS}" -ge 8 ]]; then + break + fi + echo "Пароль слишком короткий. Нужно не менее 8 символов." + done +elif [[ "${#WARP_WEBUI_PASS}" -lt 8 ]]; then + echo "WARP_WEBUI_PASS слишком короткий. Нужно не менее 8 символов." + exit 1 +fi # Публичный адрес для подсказок в пресетах клиентов (необязательно) WARP_PUBLIC_HOST="${WARP_PUBLIC_HOST:-}"