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:
1 parent
245b69d992
commit
d357e743fa
2 files changed
+67
-16
No files matched your search
@@ -34,6 +34,12 @@
|
|||||||
- **Директория:** `zed/.config/zed/`
|
- **Директория:** `zed/.config/zed/`
|
||||||
- Структура для конфигурации 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
|
||||||
- **Директория:** `opencode/.config/opencode/`
|
- **Директория:** `opencode/.config/opencode/`
|
||||||
- Конфигурация AI-ассистента opencode с MCP-серверами:
|
- Конфигурация 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
|
```bash
|
||||||
@@ -82,6 +104,11 @@ cp vim/.vimrc ~/
|
|||||||
mkdir -p ~/.config/zed
|
mkdir -p ~/.config/zed
|
||||||
cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true
|
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
|
# Opencode
|
||||||
mkdir -p ~/.config/opencode
|
mkdir -p ~/.config/opencode
|
||||||
cp opencode/.config/opencode/* ~/.config/opencode/
|
cp opencode/.config/opencode/* ~/.config/opencode/
|
||||||
@@ -99,22 +126,6 @@ mkdir -p ~/.claude
|
|||||||
ln -snf ~/.agents/skills ~/.claude/skills
|
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)
|
||||||
|
|
||||||
Для Windows используется [chezmoi](https://www.chezmoi.io/) — кросс-платформенный менеджер dotfiles.
|
Для Windows используется [chezmoi](https://www.chezmoi.io/) — кросс-платформенный менеджер dotfiles.
|
||||||
@@ -202,4 +213,22 @@ export ZAI_API_KEY="your_zai_api_key_here"
|
|||||||
|
|
||||||
Файл `~/.env.secrets` автоматически подгружается при старте shell.
|
Файл `~/.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` для дополнительной информации.
|
См. `.env.example` для дополнительной информации.
|
||||||
Executable
+22
@@ -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
|
||||||
Reference in new issue
Block a user