Add repository cloning and VSCode opening to install.ps1

- Ask user if they want to clone workshop to Documents/git-workshop
- Automatically clone repository to Documents folder for convenience
- Open VSCode in the workshop directory after cloning
- Handle existing repositories (update if already cloned)
- Provide quick start commands for VSCode terminal
- Fallback to manual instructions if user declines or cloning fails
- Complete end-to-end setup experience
This commit is contained in:
Bjarke Sporring
2026-01-14 17:03:04 +01:00
parent cbefeaf4d2
commit 09f25d6eae

View File

@@ -593,10 +593,78 @@ if ($allRequired) {
Write-Host "" Write-Host ""
Write-Host "You're ready to start the workshop!" -ForegroundColor Green Write-Host "You're ready to start the workshop!" -ForegroundColor Green
Write-Host ""
# Ask user if they want to clone the workshop repository
Write-Step "Workshop Setup"
if (Get-UserConfirmation "Clone the Git Workshop repository to Documents\git-workshop and open in VSCode?") {
try {
$documentsPath = [System.Environment]::GetFolderPath("MyDocuments")
$workshopPath = Join-Path $documentsPath "git-workshop"
Write-Host " Cloning to: $workshopPath" -ForegroundColor Gray
# Create directory if it doesn't exist
$documentsDir = Split-Path $workshopPath -Parent
if (-not (Test-Path $documentsDir)) {
New-Item -Path $documentsDir -ItemType Directory -Force | Out-Null
}
# Clone or update the repository
if (Test-Path $workshopPath) {
Write-Host " Directory already exists. Checking if it's a git repository..." -ForegroundColor Yellow
Push-Location $workshopPath
if (Get-Command git -ErrorAction SilentlyContinue) {
$remoteResult = git remote get-url origin 2>$null
if ($LASTEXITCODE -eq 0 -and $remoteResult -like "*git-workshop*") {
Write-Host " Repository already exists. Updating..." -ForegroundColor Cyan
git pull origin main
} else {
Write-Warning " Directory exists but is not the git-workshop repository"
Write-Host " Please remove the directory manually and run again" -ForegroundColor Yellow
Pop-Location
return
}
}
Pop-Location
} else {
git clone "https://git.frod.dk/floppydiscen/git-workshop.git" $workshopPath
Write-Success "Repository cloned successfully!"
}
# Open in VSCode
Write-Host " Opening in VSCode..." -ForegroundColor Cyan
if (Get-Command code -ErrorAction SilentlyContinue) {
& code $workshopPath
Write-Success "VSCode opened with the workshop repository"
} else {
Write-Warning "VSCode command not found. Please open manually:"
Write-Host " code '$workshopPath'" -ForegroundColor White
}
Write-Host ""
Write-Host "Quick start commands (run in VSCode terminal):" -ForegroundColor Cyan
Write-Host " cd 01-essentials\01-basics" -ForegroundColor White
Write-Host " .\setup.ps1" -ForegroundColor White
Write-Host ""
} catch {
Write-Error "Failed to clone repository: $_"
Write-Host ""
Write-Host "You can clone manually:" -ForegroundColor Yellow
Write-Host " git clone https://git.frod.dk/floppydiscen/git-workshop.git ~/Documents/git-workshop" -ForegroundColor White
Write-Host " code ~/Documents/git-workshop" -ForegroundColor White
}
} else {
Write-Host " Skipping repository clone." -ForegroundColor Gray
Write-Host ""
Write-Host "Manual setup:" -ForegroundColor Cyan
Write-Host " cd path\to\git-workshop" -ForegroundColor White Write-Host " cd path\to\git-workshop" -ForegroundColor White
Write-Host " cd 01-essentials\01-basics" -ForegroundColor White Write-Host " cd 01-essentials\01-basics" -ForegroundColor White
Write-Host " .\setup.ps1" -ForegroundColor White Write-Host " .\setup.ps1" -ForegroundColor White
Write-Host "" Write-Host ""
}
} }
else { else {
Write-Host "" Write-Host ""