From d357e743fa15b61f6b4ec6c8340b321f2d4a7c34 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sat, 21 Feb 2026 21:39:14 +0300 Subject: [PATCH] =?UTF-8?q?feat(vscode):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20server-env-setup=20=D0=B4=D0=BB=D1=8F=20WS?= =?UTF-8?q?L=20=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=81=D0=B5=D0=BA=D1=80=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - требуется передавать переменные из ~/.env.secrets в окружение VS Code Server в WSL. - Что: - добавлен stow-пакет vscode с файлом ~/.vscode-server/server-env-setup. - реализована загрузка ~/.env.secrets через source в режиме fail-open с warning в stderr. - обновлен README: раздел VS Code (WSL), установка через stow/вручную, reconnect и обработка конфликтов. - Проверка: - bash -n vscode/.vscode-server/server-env-setup. - stow -nvt ~ vscode. - запуск скрипта с валидным, отсутствующим и битым ~/.env.secrets в изолированном HOME. --- README.md | 61 +++++++++++++++++++------- vscode/.vscode-server/server-env-setup | 22 ++++++++++ 2 files changed, 67 insertions(+), 16 deletions(-) create mode 100755 vscode/.vscode-server/server-env-setup diff --git a/README.md b/README.md index 262c836..52ebba1 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,12 @@ - **Директория:** `zed/.config/zed/` - Структура для конфигурации Zed редактора +### VS Code (WSL) +- **Файл:** `vscode/.vscode-server/server-env-setup` +- Поддержка `~/.vscode-server/server-env-setup` для VS Code Server в WSL +- Подгрузка `~/.env.secrets` для расширений, задач/debug и терминалов VS Code +- Режим `fail-open`: при проблеме с файлом выводится warning, запуск VS Code не блокируется + ### Opencode - **Директория:** `opencode/.config/opencode/` - Конфигурация AI-ассистента opencode с MCP-серверами: @@ -59,6 +65,22 @@ ## 🚀 Установка +### Stow (рекомендуется) + +```bash +# Установка stow +sudo apt install stow + +# Применение конфигов +cd /path/to/dotfiles +stow bash tmux vim zed vscode agents opencode codex claude +``` + +Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку: +```bash +[ -f ~/.bash_custom ] && source ~/.bash_custom +``` + ### Ручная установка ```bash @@ -82,6 +104,11 @@ cp vim/.vimrc ~/ mkdir -p ~/.config/zed cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true +# VS Code (WSL) +mkdir -p ~/.vscode-server +cp vscode/.vscode-server/server-env-setup ~/.vscode-server/server-env-setup +chmod +x ~/.vscode-server/server-env-setup + # Opencode mkdir -p ~/.config/opencode cp opencode/.config/opencode/* ~/.config/opencode/ @@ -99,22 +126,6 @@ mkdir -p ~/.claude ln -snf ~/.agents/skills ~/.claude/skills ``` -### Stow (рекомендуется для Linux/WSL) - -```bash -# Установка stow -sudo apt install stow - -# Применение конфигов -cd /path/to/dotfiles -stow bash tmux vim zed agents opencode codex claude -``` - -Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку: -```bash -[ -f ~/.bash_custom ] && source ~/.bash_custom -``` - ### Windows (chezmoi) Для Windows используется [chezmoi](https://www.chezmoi.io/) — кросс-платформенный менеджер dotfiles. @@ -202,4 +213,22 @@ export ZAI_API_KEY="your_zai_api_key_here" Файл `~/.env.secrets` автоматически подгружается при старте shell. +### VS Code Server в WSL + +Для VS Code в WSL используется файл `~/.vscode-server/server-env-setup`. +В этом репозитории он находится в `vscode/.vscode-server/server-env-setup` и подгружает `~/.env.secrets` в окружение VS Code Server. + +После установки/обновления файла сделайте одно из действий: +- `Developer: Reload Window` в VS Code +- или `Remote-WSL: Reconnect to WSL` + +Если у вас уже есть локальный `~/.vscode-server/server-env-setup`, stow может сообщить конфликт. +Тогда сохраните старую версию и примените stow повторно: +```bash +mv ~/.vscode-server/server-env-setup ~/.vscode-server/server-env-setup.bak.$(date +%Y%m%d%H%M%S) +stow -vt ~ vscode +``` + +Скрипт работает в режиме `fail-open`: если `~/.env.secrets` отсутствует или содержит ошибку, VS Code продолжит запуск, а warning появится в логах. + См. `.env.example` для дополнительной информации. diff --git a/vscode/.vscode-server/server-env-setup b/vscode/.vscode-server/server-env-setup new file mode 100755 index 0000000..465ed81 --- /dev/null +++ b/vscode/.vscode-server/server-env-setup @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# VS Code WSL server startup hook. +# Loads private environment variables from ~/.env.secrets if available. + +secrets_file="$HOME/.env.secrets" + +warn() { + printf 'server-env-setup: %s\n' "$1" >&2 +} + +if [ ! -f "$secrets_file" ]; then + warn "warning: $secrets_file not found; starting without extra secrets." + return 0 2>/dev/null || exit 0 +fi + +# shellcheck disable=SC1090 +if ! source "$secrets_file"; then + warn "warning: failed to source $secrets_file; starting without extra secrets." +fi + +return 0 2>/dev/null || exit 0