103 lines
4.1 KiB
PowerShell
103 lines
4.1 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
<#
|
|
.SYNOPSIS
|
|
Verifies the Module 02 challenge solution.
|
|
|
|
.DESCRIPTION
|
|
This script checks that:
|
|
- The challenge directory exists
|
|
- A Git repository exists
|
|
- answers.txt exists with correct information about commit history
|
|
#>
|
|
|
|
Write-Host "`n=== Verifying Module 02 Solution ===" -ForegroundColor Cyan
|
|
|
|
$allChecksPassed = $true
|
|
|
|
# Check if challenge directory exists
|
|
if (-not (Test-Path "challenge")) {
|
|
Write-Host "[FAIL] Challenge directory not found. Did you run setup.ps1?" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Set-Location "challenge"
|
|
|
|
# Check if git repository exists
|
|
if (-not (Test-Path ".git")) {
|
|
Write-Host "[FAIL] Not a git repository. Did you run setup.ps1?" -ForegroundColor Red
|
|
Set-Location ..
|
|
exit 1
|
|
}
|
|
|
|
# Check if answers.txt exists
|
|
if (-not (Test-Path "answers.txt")) {
|
|
Write-Host "[FAIL] answers.txt not found. Create this file with your answers." -ForegroundColor Red
|
|
Write-Host "[HINT] Review the questions in README.md and create answers.txt" -ForegroundColor Yellow
|
|
$allChecksPassed = $false
|
|
} else {
|
|
Write-Host "[PASS] answers.txt exists" -ForegroundColor Green
|
|
|
|
# Read the answers file
|
|
$answers = Get-Content "answers.txt" -Raw
|
|
$answersLower = $answers.ToLower()
|
|
|
|
# Check 1: Contains "5" or "five" for commit count
|
|
if ($answersLower -match "5|five") {
|
|
Write-Host "[PASS] Correct commit count found" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[FAIL] Commit count not found or incorrect" -ForegroundColor Red
|
|
Write-Host "[HINT] Use 'git log --oneline' to count commits easily" -ForegroundColor Yellow
|
|
$allChecksPassed = $false
|
|
}
|
|
|
|
# Check 2: Contains "database" keyword for third commit
|
|
if ($answersLower -match "database") {
|
|
Write-Host "[PASS] Third commit message identified" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[FAIL] Third commit message not found" -ForegroundColor Red
|
|
Write-Host "[HINT] Use 'git log' to see commit messages in order" -ForegroundColor Yellow
|
|
$allChecksPassed = $false
|
|
}
|
|
|
|
# Check 3: Contains "auth" keyword for file modified in bug fix
|
|
if ($answersLower -match "auth") {
|
|
Write-Host "[PASS] Correct file identified for bug fix commit" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[FAIL] File modified in bug fix commit not found" -ForegroundColor Red
|
|
Write-Host "[HINT] Use 'git log --stat' to see which files were changed in each commit" -ForegroundColor Yellow
|
|
$allChecksPassed = $false
|
|
}
|
|
|
|
# Check 4: Some mention of changes (flexible check)
|
|
if ($answersLower -match "import|profile|function|added|login|connect") {
|
|
Write-Host "[PASS] Changes to app.py described" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[FAIL] Changes to app.py not described" -ForegroundColor Red
|
|
Write-Host "[HINT] Use 'git diff <first-commit> <last-commit> app.py' to see changes" -ForegroundColor Yellow
|
|
$allChecksPassed = $false
|
|
}
|
|
}
|
|
|
|
Set-Location ..
|
|
|
|
# Final summary
|
|
if ($allChecksPassed) {
|
|
Write-Host "`n" -NoNewline
|
|
Write-Host "=====================================" -ForegroundColor Green
|
|
Write-Host " CONGRATULATIONS! CHALLENGE PASSED!" -ForegroundColor Green
|
|
Write-Host "=====================================" -ForegroundColor Green
|
|
Write-Host "`nYou've successfully explored Git commit history!" -ForegroundColor Cyan
|
|
Write-Host "You now know how to:" -ForegroundColor Cyan
|
|
Write-Host " - View commit history with git log" -ForegroundColor White
|
|
Write-Host " - Find specific commits and their messages" -ForegroundColor White
|
|
Write-Host " - See which files changed in commits" -ForegroundColor White
|
|
Write-Host " - Compare changes between commits with git diff" -ForegroundColor White
|
|
Write-Host "`nReady for the next module!" -ForegroundColor Green
|
|
Write-Host ""
|
|
} else {
|
|
Write-Host "`n[SUMMARY] Some checks failed. Review the hints above and try again." -ForegroundColor Red
|
|
Write-Host "[INFO] You can run this verification script as many times as needed." -ForegroundColor Yellow
|
|
Write-Host ""
|
|
exit 1
|
|
}
|