Added proper flags

This commit is contained in:
Zackarias Montell
2026-01-22 10:34:57 +01:00
parent c7e582f246
commit b52fc4c1f9

View File

@@ -1,3 +1,124 @@
param (
[Alias('h', '?')]
[switch]$Help,
[Alias('no-winget')]
[switch]$NoWinget,
[Alias('only-winget')]
[switch]$OnlyWinget,
[Alias('install-extras')]
[switch]$Extras,
[Alias('only-extras')]
[switch]$OnlyExtras,
[Alias('no-choco')]
[switch]$NoChoco,
[Alias('only-choco')]
[switch]$OnlyChoco,
[Alias('no-powershell')]
[switch]$NoPowershell,
[Alias('only-powershell')]
[switch]$OnlyPowershell,
[Alias('no-pip')]
[switch]$NoPip,
[Alias('only-pip')]
[switch]$OnlyPip,
[Alias('no-npm')]
[switch]$NoNpm,
[Alias('only-npm')]
[switch]$OnlyNpm
)
if ($Help)
{
@"
requirements.ps1 Install system requirements
USAGE:
requirements.ps1 [options]
OPTIONS:
-no-winget Disable installation via winget
-no-choco Disable installation via Chocolatey
-no-powershell Disable PowerShell module installation
-no-pip Disable Python pip package installation
-install-extras Install optional / extra components
-help, -h, -? Show this help message and exit
NOTES:
Use single-dash options for best compatibility:
-no-winget -no-choco
Double-dash options (--no-winget) only work in PowerShell 7+ (pwsh)
EXAMPLES:
requirements.ps1 -no-winget -no-choco
requirements.ps1 -install-extras
pwsh requirements.ps1 --no-winget --no-pip
"@
exit 0
}
function Write-Divider
{
Write-Host "################################################################################"
}
$Flags = [ordered]@{
WingetEnabled = -not $NoWinget
ExtrasEnabled = $Extras
ChocoEnabled = -not $NoChoco
PowershellEnabled = -not $NoPowershell
PipEnabled = -not $NoPip
NpmEnabled = -not $NoNpm
}
function Reset-Flags
{
foreach ($key in @($Flags.Keys))
{
$Flags[$key] = $false
}
}
if ($OnlyWinget)
{
Reset-Flags
$Flags.WingetEnabled = $true
}
if ($OnlyExtras)
{
Reset-Flags
$Flags.ExtrasEnabled = $true
}
if ($OnlyChoco)
{
Reset-Flags
$Flags.ChocoEnabled = $true
}
if ($OnlyPowershell)
{
Reset-Flags
$Flags.PowershellEnabled = $true
}
if ($OnlyPip)
{
Reset-Flags
$Flags.PipEnabled = $true
}
if ($OnlyNpm)
{
Reset-Flags
$Flags.NpmEnabled = $true
}
Write-Host "These providers are enabled:"
foreach ($key in $Flags.Keys)
{
if ($Flags[$key])
{
Write-Host $key
}
}
# Install requirements via winget # Install requirements via winget
# Important stuff # Important stuff
$packages = @( $packages = @(
@@ -18,48 +139,71 @@ $packages = @(
"7zip.7zip" # nvim "7zip.7zip" # nvim
"rustlang.rustup" "rustlang.rustup"
) )
$ExtraPackages = @(
foreach ($package in $packages)
{
winget install $package
}
# Install latest node LTS
fnm install 22
fnm use 22
cd ~
npm install # mostly nvim deps
## Nvim requirements from choco, needs to be run as admin
Start-Process pwsh -Verb RunAs -ArgumentList "-Command", "choco install make unzip ripgrep zig"
## Nvim requirements from pip
python -m pip install debugpy neovim pillow
## Git posh
Install-Module posh-git -Scope CurrentUser -Force
# extras, make flag for these
$packages = @(
"mRemoteNG.mRemoteNG", "mRemoteNG.mRemoteNG",
"mozilla.firefox.developeredition",
"Microsoft.VisualStudio.2022.Community", "Microsoft.VisualStudio.2022.Community",
"JetBrains.Resharper", "JetBrains.Resharper",
"Microsoft.powertoys", "Microsoft.powertoys",
"spotify.spotify", "spotify.spotify",
"microsoft.azuredatastudio", "microsoft.azuredatastudio",
"mozilla.thunderbird", "mozilla.thunderbird",
"yubico.authenticator",
"Postman.Postman", "Postman.Postman",
"docker.dockerdesktop" "docker.dockerdesktop"
) )
# Iterate through each package and install it if ($Flags.WingetEnabled)
foreach ($package in $packages)
{ {
Write-Divider
Write-Host "Installing Winget Packages"
foreach ($package in $packages)
{
winget install $package winget install $package
}
} }
if ($Flags.ExtrasEnabled)
{
Write-Divider
Write-Host "Installing Extra Winget Packages"
foreach ($package in $ExtraPackages)
{
winget install $package
}
}
if ($Flags.NpmEnabled)
{
Write-Divider
Write-Host "Installing Npm Packages"
fnm install 22
fnm use 22
Set-Location ~
npm install
}
if ($Flags.ChocoEnabled)
{
Write-Divider
Write-Host "Installing Chocolatey Packages"
## Nvim requirements from choco, needs to be run as admin
Start-Process pwsh -Verb RunAs -ArgumentList "-Command", "choco install make unzip ripgrep zig"
}
if ($Flags.PipEnabled)
{
Write-Divider
Write-Host "Installing pip Packages"
## Nvim requirements from pip
python -m pip install debugpy neovim pillow
}
if ($Flags.PowershellEnabled)
{
Write-Divider
Write-Host "Installing Powershell Packages"
## Git posh
Install-Module posh-git -Scope CurrentUser -Force
}
Write-Divider
Write-Host "Done!"