feat(vscode): добавлен server-env-setup для WSL и загрузки секретов

- Зачем:
  - требуется передавать переменные из ~/.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.
This commit is contained in:
ddadmin committed 2026-03-06 20:28:13 +03:00
1 parent 245b69d992
commit d357e743fa
2 files changed
+67 -16

No files matched your search

+45 -16
View File
@@ -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` для дополнительной информации.
+22
View File
@@ -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