Added proper flags
This commit is contained in:
202
requirements.ps1
202
requirements.ps1
@@ -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)
|
||||||
|
{
|
||||||
|
Write-Divider
|
||||||
|
Write-Host "Installing Winget Packages"
|
||||||
foreach ($package in $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!"
|
||||||
|
|||||||
Reference in New Issue
Block a user