From 60b915de5f32feee327f260eb121d1d47547d539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Mon, 17 Aug 2026 06:00:27 +0300 Subject: [PATCH] feat(setup): add ./setup.sh update CLI mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./setup.sh update (или --update) запускает git pull --ff-only + перегенерацию всех ai-* лаунчеров без интерактивного меню — то же, что пункт меню 7 (логика вынесена в общую do_update). Неизвестный аргумент печатает usage и выходит с кодом 1, без аргументов открывается меню как раньше. Co-Authored-By: Claude --- QUICK_START.md | 5 +++++ README.md | 9 +++++++++ setup.sh | 35 +++++++++++++++++++++++++++++------ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/QUICK_START.md b/QUICK_START.md index ff7b4c2..ee03442 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -15,6 +15,11 @@ bash setup.sh exec bash ``` +Обновление всех AI-инструментов одной командой: +```bash +./setup.sh update +``` + ## 2. Настроить сеть (Amnezia + ru-bypass) Нужно один раз на каждой машине. .ru трафик идёт напрямую, diff --git a/README.md b/README.md index 2b293d2..2b0a839 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,15 @@ bash setup.sh exec bash ``` +### Обновление одной командой + +```bash +./setup.sh update # или: ./setup.sh --update +``` + +То же, что пункт меню `7) Обновить`: `git pull --ff-only` + перегенерация всех +`ai-*` лаунчеров через `scripts/ai-setup.sh`. Без аргументов открывается меню. + ## Сеть: ru-bypass + kill switch Полная документация: [`home-configs/network/README.md`](home-configs/network/README.md) diff --git a/setup.sh b/setup.sh index ee867db..d4a2dec 100755 --- a/setup.sh +++ b/setup.sh @@ -18,6 +18,34 @@ mkdir -p "$HOME/.config/ai-setup" LOG="$HOME/.config/ai-setup/setup.log" _log() { printf '%s [%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" "$2" >> "$LOG"; } +# Обновление: git pull + перегенерация всех ai-* лаунчеров (пункт меню 7) +do_update() { + local repo_dir + repo_dir="$(pwd)" + echo -e "${BLD}Обновляем репозиторий...${CLR}" + git -C "$repo_dir" pull --ff-only + echo "" + echo -e "${BLD}Перегенерация скриптов...${CLR}" + bash "$repo_dir/scripts/ai-setup.sh" +} + +# CLI-режим: ./setup.sh update (или --update) — обновление без меню +case "${1:-}" in + update|--update) + _log "setup" "update (CLI) на $(hostname)" + do_update + exit $? + ;; + "") + # без аргументов — интерактивное меню ниже + ;; + *) + echo "Неизвестный аргумент: $1" + echo "Использование: ./setup.sh [update] — без аргументов открывается меню" + exit 1 + ;; +esac + if command -v whiptail >/dev/null 2>&1; then MENU_ARGS=() MENU_ARGS+=("1" "AI-инструменты (установить лаунчеры + ключи)") @@ -248,12 +276,7 @@ case "$choice" in bash tests/test_network.sh ;; 7) - REPO_DIR="$(cd "$(dirname "$0")" && pwd)" - echo -e "${BLD}Обновляем репозиторий...${CLR}" - git -C "$REPO_DIR" pull --ff-only - echo "" - echo -e "${BLD}Перегенерация скриптов...${CLR}" - bash "$REPO_DIR/scripts/ai-setup.sh" + do_update ;; 8) bash scripts/ai-setup.sh