lancer-vscode.ps1
|
<# .SYNOPSIS Ouvre VS Code dans un contexte DevContext, identité chargée. .DESCRIPTION Un raccourci qui lance VS Code directement l'isole (--user-data-dir) mais ne pose AUCUNE variable d'environnement : le terminal intégré et Claude Code démarrent alors sans GH_CONFIG_DIR, sans SUPABASE_ACCESS_TOKEN et sans la configuration Vercel du contexte. `gh` repartirait sur le dernier compte connecté de la machine — précisément ce que DevContext empêche. Ce script rétablit l'ordre correct : 1. `work <contexte>` pose les variables d'environnement 2. `Set-Location` déclenche la résolution de la clé Supabase du dossier 3. `ctx` vérifie que dossier, identité et compte concordent 4. VS Code hérite de tout ce qui précède VS Code n'est PAS lancé si la vérification échoue : la fenêtre reste ouverte avec le motif affiché. .PARAMETER Context Nom du contexte DevContext (`perso`, `client-a`, …). Voir `ctx-list`. .PARAMETER Path Dossier à ouvrir. Viser le PROJET, jamais la racine du contexte : ouvrir `C:\Work\Apps` fait chercher tsserver dans `C:\Work\Apps\node_modules`, qui n'existe pas. .EXAMPLE .\lancer-vscode.ps1 -Context client-a -Path 'C:\Work\Clients\client-a\projet' .NOTES Créé le 8 août 2026. Appelé par les raccourcis du Bureau. #> [CmdletBinding()] param( [Parameter(Mandatory)][string]$Context, [Parameter(Mandatory)][string]$Path ) $ErrorActionPreference = 'Stop' # Script autonome : T est interne au module, il faut sourcer la langue soi-meme. . (Join-Path $PSScriptRoot 'src' 'Langue.ps1') Set-CtxLangue | Out-Null function Stop-WithMessage { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Affiche un motif et termine le script ; ne modifie aucun etat.')] param([string]$Message) Write-Host "" Write-Host " $Message" -ForegroundColor Red Write-Host "" Read-Host (" " + (T 'lanceur.fermer')) exit 1 } # Le profil PowerShell charge normalement DevContext. S'il ne l'a pas fait # (profil désactivé, module déplacé), l'import explicite le dit clairement au # lieu d'échouer sur un « work : terme non reconnu ». if (-not (Get-Command work -ErrorAction SilentlyContinue)) { try { Import-Module DevContext -ErrorAction Stop } catch { Stop-WithMessage "Module DevContext introuvable. Verifier ~\Documents\PowerShell\Modules\DevContext\." } } if (-not (Test-Path -LiteralPath $Path)) { Stop-WithMessage "Dossier introuvable : $Path" } # -NoCd : on se place ensuite sur le PROJET, pas sur la racine du contexte. Use-DevContext -Name $Context -NoCd # Le changement de dossier déclenche le hook qui aligne SUPABASE_ACCESS_TOKEN # sur le project-ref trouvé dans le dossier — indispensable quand un contexte # porte plusieurs comptes Supabase. Set-Location -LiteralPath $Path if (-not (Test-DevContext -Quiet)) { Test-DevContext | Out-Null Stop-WithMessage "NO-GO — VS Code n'a pas ete lance. Corriger avant de pousser ou deployer." } Write-Host " $(T 'lanceur.go')" -ForegroundColor Green Open-DevCode $Context $Path |