From 5315767638552522ba122cfbdf5575e7a5bef6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D0=B8=D0=BB=20=D0=93=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=B0=D1=80=D1=8C?= Date: Tue, 19 May 2026 17:15:01 +0300 Subject: [PATCH] Refactor install script for improved logging and setup process --- install.sh | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index c070c44..2b3b186 100644 --- a/install.sh +++ b/install.sh @@ -18,10 +18,10 @@ INSTALL_DIR="${COBOT_INSTALL_DIR:-$HOME/.lwc/ros2_iiwa7}" # Определяем интерактивный режим: при запуске через curl | bash stdin не является терминалом if [ -t 0 ]; then IS_INTERACTIVE=true; else IS_INTERACTIVE=false; fi -log_info() { echo -e "${CYAN}[*]${NC} $1"; } +log_info() { echo -e "${CYAN}[*]${NC} $1"; } log_success() { echo -e "${GREEN}[ok]${NC} $1"; } -log_warn() { echo -e "${YELLOW}[!]${NC} $1"; } -log_error() { echo -e "${RED}[err]${NC} $1"; exit 1; } +log_warn() { echo -e "${YELLOW}[!]${NC} $1"; } +log_error() { echo -e "${RED}[err]${NC} $1"; exit 1; } print_banner() { echo "" @@ -82,8 +82,6 @@ check_docker() { return fi log_info "Installing Docker via get.docker.com..." - # Скачиваем установщик во временный файл, а не запускаем через pipe — - # так видны ошибки сети отдельно от ошибок самого установщика local _installer _installer="$(mktemp /tmp/lwc-docker.XXXXXX.sh)" if ! curl -fsSL https://get.docker.com -o "$_installer"; then @@ -116,7 +114,6 @@ install_uv() { return fi log_info "Installing uv..." - # Два отдельных файла: лог и установщик — чтобы различать ошибки скачивания и установки local _log _installer _log="$(mktemp /tmp/lwc-uv.XXXXXX.log)" _installer="$(mktemp /tmp/lwc-uv-installer.XXXXXX.sh)" @@ -149,7 +146,6 @@ check_python() { log_success "$ver found" return fi - # uv умеет скачивать и изолировать нужную версию Python без sudo log_info "Installing Python $PYTHON_VERSION via uv..." "$UV_CMD" python install "$PYTHON_VERSION" || log_error "Failed to install Python $PYTHON_VERSION" log_success "Python $PYTHON_VERSION installed" @@ -176,7 +172,6 @@ resolve_install_dir() { install_cobot() { log_info "Installing cobot CLI..." cd "$INSTALL_DIR" - # uv tool install создаёт изолированное окружение и кладёт бинарник cobot в ~/.local/bin "$UV_CMD" tool install --python "$PYTHON_VERSION" --editable . \ || log_error "Failed to install cobot" log_success "cobot installed" @@ -194,8 +189,8 @@ setup_path() { if [[ ":$PATH:" != *":$bin_dir:"* ]]; then echo "" >> "$shell_rc" echo "export PATH=\"$bin_dir:\$PATH\"" >> "$shell_rc" + # Обновляем PATH внутри скрипта — нужно чтобы cobot setup сработал ниже export PATH="$bin_dir:$PATH" - log_warn "Run 'source $shell_rc' or open a new terminal to use 'cobot'" fi command -v cobot &>/dev/null && log_success "cobot -> $(command -v cobot)" } @@ -209,25 +204,17 @@ print_success() { echo "" } -ask_run_setup() { - # В неинтерактивном режиме (curl | bash) пропускаем вопрос - if [ "$IS_INTERACTIVE" = false ]; then - log_info "Run 'cobot setup' to configure the framework" - return - fi +run_setup() { + log_info "Running cobot setup..." + cobot setup - printf "Run setup now? [y/N] " - read -r answer - case "$answer" in - [yY]|[yY][eE][sS]) - cobot setup - ;; - *) - echo "" - echo "To configure the framework, run: cobot setup" - echo "" - ;; - esac + if [ "$IS_INTERACTIVE" = false ]; then + echo "" + echo " To apply PATH changes in this terminal, run:" + echo " source ~/.bashrc (bash)" + echo " source ~/.zshrc (zsh)" + echo "" + fi } main() { @@ -241,7 +228,7 @@ main() { install_cobot setup_path print_success - ask_run_setup + run_setup } main