mirror of
https://github.com/m1ngsama/winfig.git
synced 2025-12-24 10:51:49 +00:00
89 lines
2.5 KiB
PowerShell
89 lines
2.5 KiB
PowerShell
# Scoop Package Installation Script
|
|
# Installs essential development tools and utilities
|
|
|
|
param(
|
|
[string]$Category = "all",
|
|
[switch]$DryRun
|
|
)
|
|
|
|
$packagesFile = Join-Path $PSScriptRoot "packages.json"
|
|
$packages = Get-Content $packagesFile | ConvertFrom-Json
|
|
|
|
function Write-ColorOutput {
|
|
param($message, $color = "White")
|
|
Write-Host $message -ForegroundColor $color
|
|
}
|
|
|
|
function Install-Package {
|
|
param($packageName)
|
|
|
|
if ($DryRun) {
|
|
Write-ColorOutput " [DRY RUN] Would install: $packageName" "Yellow"
|
|
return
|
|
}
|
|
|
|
Write-ColorOutput " Installing: $packageName" "Cyan"
|
|
scoop install $packageName
|
|
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-ColorOutput " ✓ Installed: $packageName" "Green"
|
|
} else {
|
|
Write-ColorOutput " ✗ Failed: $packageName" "Red"
|
|
}
|
|
}
|
|
|
|
function Add-Bucket {
|
|
param($bucketName)
|
|
|
|
if ($DryRun) {
|
|
Write-ColorOutput "[DRY RUN] Would add bucket: $bucketName" "Yellow"
|
|
return
|
|
}
|
|
|
|
Write-ColorOutput "Adding bucket: $bucketName" "Cyan"
|
|
scoop bucket add $bucketName
|
|
}
|
|
|
|
# Check if scoop is installed
|
|
if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) {
|
|
Write-ColorOutput "Error: Scoop is not installed!" "Red"
|
|
Write-ColorOutput "Install Scoop first: https://scoop.sh" "Yellow"
|
|
exit 1
|
|
}
|
|
|
|
Write-ColorOutput "=== Scoop Package Installation ===" "Magenta"
|
|
Write-ColorOutput ""
|
|
|
|
# Add buckets
|
|
Write-ColorOutput "Adding buckets..." "Green"
|
|
foreach ($bucket in $packages.buckets) {
|
|
Add-Bucket $bucket
|
|
}
|
|
Write-ColorOutput ""
|
|
|
|
# Install packages based on category
|
|
if ($Category -eq "all") {
|
|
foreach ($cat in $packages.packages.PSObject.Properties) {
|
|
Write-ColorOutput "Installing $($cat.Name) packages..." "Green"
|
|
foreach ($package in $cat.Value) {
|
|
Install-Package $package
|
|
}
|
|
Write-ColorOutput ""
|
|
}
|
|
} else {
|
|
if ($packages.packages.PSObject.Properties.Name -contains $Category) {
|
|
Write-ColorOutput "Installing $Category packages..." "Green"
|
|
foreach ($package in $packages.packages.$Category) {
|
|
Install-Package $package
|
|
}
|
|
} else {
|
|
Write-ColorOutput "Error: Category '$Category' not found!" "Red"
|
|
Write-ColorOutput "Available categories: $($packages.packages.PSObject.Properties.Name -join ', ')" "Yellow"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
Write-ColorOutput ""
|
|
Write-ColorOutput "=== Installation Complete ===" "Magenta"
|
|
Write-ColorOutput ""
|
|
Write-ColorOutput "Run 'scoop status' to check for updates." "Cyan"
|