From ced6b34ddd5d8d3df6a2887c2acb704a5ff99655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=88=D0=B5=20=D0=98=D0=BC=D1=8F?= Date: Sun, 20 Jul 2025 17:37:25 +0300 Subject: [PATCH] update --- .../universal-install-fix/requirements.md | 0 install.sh | 64 +++++++++++++++++-- 2 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 .kiro/specs/universal-install-fix/requirements.md diff --git a/.kiro/specs/universal-install-fix/requirements.md b/.kiro/specs/universal-install-fix/requirements.md new file mode 100644 index 0000000..e69de29 diff --git a/install.sh b/install.sh index 3b1fbae..6d6a18a 100755 --- a/install.sh +++ b/install.sh @@ -65,7 +65,20 @@ ask_confirmation() { fi while true; do - read -p "$prompt" choice < /dev/tty + if [ -t 0 ]; then + # Если stdin доступен, читаем оттуда + read -p "$prompt" choice + else + # Если stdin недоступен (pipe), пытаемся читать с /dev/tty + if [ -c /dev/tty ]; then + read -p "$prompt" choice < /dev/tty + else + # Если /dev/tty недоступен, используем значение по умолчанию + echo "Автоматически выбрано: $default" + choice="$default" + fi + fi + case $choice in [Yy]* ) return 0 ;; [Nn]* ) return 1 ;; @@ -246,7 +259,20 @@ choose_installation_type() { echo "" while true; do - read -p "Ваш выбор (1-2): " install_choice < /dev/tty + if [ -t 0 ]; then + # Если stdin доступен, читаем оттуда + read -p "Ваш выбор (1-2): " install_choice + else + # Если stdin недоступен (pipe), пытаемся читать с /dev/tty + if [ -c /dev/tty ]; then + read -p "Ваш выбор (1-2): " install_choice < /dev/tty + else + # Если /dev/tty недоступен, используем значение по умолчанию + echo "Автоматически выбрана полная установка (по умолчанию)" + install_choice=1 + fi + fi + case $install_choice in 1) INSTALL_TYPE="full" @@ -576,7 +602,17 @@ setup_avatar() { if ask_confirmation "Установить свой аватар?" "Вам нужно будет указать путь к файлу изображения"; then while true; do echo "" - read -p "Введите полный путь к файлу аватара (PNG/JPG): " avatar_path < /dev/tty + if [ -t 0 ]; then + read -p "Введите полный путь к файлу аватара (PNG/JPG): " avatar_path + else + if [ -c /dev/tty ]; then + read -p "Введите полный путь к файлу аватара (PNG/JPG): " avatar_path < /dev/tty + else + echo "Пропуск установки аватара (автоматический режим)" + add_to_report "Установка аватара" "skipped" + return 0 + fi + fi if [ -z "$avatar_path" ]; then echo -e "${YELLOW}${WARNING} Путь не может быть пустым${NC}" @@ -749,7 +785,16 @@ main() { cd sddm-theme show_available_themes echo "" - read -p "Введите название темы для активации (например: witcher): " selected_theme < /dev/tty + if [ -t 0 ]; then + read -p "Введите название темы для активации (например: witcher): " selected_theme + else + if [ -c /dev/tty ]; then + read -p "Введите название темы для активации (например: witcher): " selected_theme < /dev/tty + else + echo "Автоматически выбрана тема: witcher (по умолчанию)" + selected_theme="witcher" + fi + fi cd .. else echo -e "${RED}${CROSS} Не удалось загрузить репозиторий${NC}" @@ -759,7 +804,16 @@ main() { "single") show_available_themes echo "" - read -p "Введите название темы для установки (например: witcher): " selected_theme < /dev/tty + if [ -t 0 ]; then + read -p "Введите название темы для установки (например: witcher): " selected_theme + else + if [ -c /dev/tty ]; then + read -p "Введите название темы для установки (например: witcher): " selected_theme < /dev/tty + else + echo "Автоматически выбрана тема: witcher (по умолчанию)" + selected_theme="witcher" + fi + fi if ! download_single_theme "$selected_theme"; then echo -e "${RED}${CROSS} Не удалось загрузить тему${NC}" exit 1