129 lines
4.0 KiB
PowerShell
129 lines
4.0 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
<#
|
|
.SYNOPSIS
|
|
Sets up the Module 04 challenge environment for learning about merging.
|
|
|
|
.DESCRIPTION
|
|
This script creates a challenge directory with a Git repository that
|
|
contains a main branch and a feature branch ready to merge. Students
|
|
will practice both fast-forward and three-way merges.
|
|
#>
|
|
|
|
Write-Host "`n=== Setting up Module 04 Challenge ===" -ForegroundColor Cyan
|
|
|
|
# Remove existing challenge directory if it exists
|
|
if (Test-Path "challenge") {
|
|
Write-Host "Removing existing challenge directory..." -ForegroundColor Yellow
|
|
Remove-Item -Recurse -Force "challenge"
|
|
}
|
|
|
|
# Create fresh challenge directory
|
|
Write-Host "Creating challenge directory..." -ForegroundColor Green
|
|
New-Item -ItemType Directory -Path "challenge" | Out-Null
|
|
Set-Location "challenge"
|
|
|
|
# Initialize Git repository
|
|
Write-Host "Initializing Git repository..." -ForegroundColor Green
|
|
git init | Out-Null
|
|
|
|
# Configure git for this repository
|
|
git config user.name "Workshop Student"
|
|
git config user.email "student@example.com"
|
|
|
|
# Commit 1: Initial API file on main
|
|
Write-Host "Creating initial API structure on main..." -ForegroundColor Green
|
|
$apiContent = @"
|
|
# api.py - API module
|
|
|
|
def api_handler():
|
|
print("API Handler initialized")
|
|
return True
|
|
"@
|
|
Set-Content -Path "api.py" -Value $apiContent
|
|
|
|
git add .
|
|
git commit -m "Initial API setup" | Out-Null
|
|
|
|
# Commit 2: Add more API functionality on main
|
|
$apiContent = @"
|
|
# api.py - API module
|
|
|
|
def api_handler():
|
|
print("API Handler initialized")
|
|
return True
|
|
|
|
def get_data():
|
|
print("Fetching data from API...")
|
|
return {"status": "ok"}
|
|
"@
|
|
Set-Content -Path "api.py" -Value $apiContent
|
|
|
|
git add .
|
|
git commit -m "Add get_data function" | Out-Null
|
|
|
|
# Create feature-api branch and add commits
|
|
Write-Host "Creating feature-api branch..." -ForegroundColor Green
|
|
git checkout -b feature-api 2>$null | Out-Null
|
|
|
|
# Commit on feature-api: Add API routes
|
|
$routesContent = @"
|
|
# api-routes.py - API Routes module
|
|
|
|
def setup_routes():
|
|
print("Setting up API routes...")
|
|
routes = {
|
|
"/api/data": "get_data",
|
|
"/api/status": "get_status"
|
|
}
|
|
return routes
|
|
"@
|
|
Set-Content -Path "api-routes.py" -Value $routesContent
|
|
|
|
git add .
|
|
git commit -m "Add API routes" | Out-Null
|
|
|
|
# Second commit on feature-api: Enhance routes
|
|
$routesContent = @"
|
|
# api-routes.py - API Routes module
|
|
|
|
def setup_routes():
|
|
print("Setting up API routes...")
|
|
routes = {
|
|
"/api/data": "get_data",
|
|
"/api/status": "get_status",
|
|
"/api/health": "health_check"
|
|
}
|
|
return routes
|
|
|
|
def health_check():
|
|
return {"healthy": True}
|
|
"@
|
|
Set-Content -Path "api-routes.py" -Value $routesContent
|
|
|
|
git add .
|
|
git commit -m "Add health check route" | Out-Null
|
|
|
|
# Switch back to main branch
|
|
Write-Host "Switching back to main branch..." -ForegroundColor Green
|
|
git checkout main 2>$null | Out-Null
|
|
|
|
# Return to module directory
|
|
Set-Location ..
|
|
|
|
Write-Host "`n=== Setup Complete! ===" -ForegroundColor Green
|
|
Write-Host "`nYour challenge environment is ready in the 'challenge/' directory." -ForegroundColor Cyan
|
|
Write-Host "`nYou have:" -ForegroundColor Cyan
|
|
Write-Host " - A main branch with API code" -ForegroundColor White
|
|
Write-Host " - A feature-api branch with API routes ready to merge" -ForegroundColor White
|
|
Write-Host "`nNext steps:" -ForegroundColor Cyan
|
|
Write-Host " 1. cd challenge" -ForegroundColor White
|
|
Write-Host " 2. View branches: git branch -a" -ForegroundColor White
|
|
Write-Host " 3. Merge feature-api: git merge feature-api (fast-forward merge)" -ForegroundColor White
|
|
Write-Host " 4. Create feature-ui branch: git checkout -b feature-ui" -ForegroundColor White
|
|
Write-Host " 5. Make commits on feature-ui" -ForegroundColor White
|
|
Write-Host " 6. Switch back to main and make a commit there" -ForegroundColor White
|
|
Write-Host " 7. Merge feature-ui: git merge feature-ui (three-way merge)" -ForegroundColor White
|
|
Write-Host " 8. View merge history: git log --oneline --graph --all" -ForegroundColor White
|
|
Write-Host " 9. Run '..\verify.ps1' to check your solution" -ForegroundColor White
|
|
Write-Host ""
|