-
Notifications
You must be signed in to change notification settings - Fork 3
/
setup.ps1
66 lines (57 loc) · 2.12 KB
/
setup.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Param (
[switch] $SetupChocoPackages,
[switch] $SetupPoshModules
)
Function Install-NeededFor {
param(
[string] $packageName = '',
[bool] $defaultAnswer = $true
)
if ($packageName -eq '') { return $false }
$yes = '6'
$no = '7'
$msgBoxTimeout = '-1'
$defaultAnswerDisplay = 'Yes'
$buttonType = 0x4;
if (!$defaultAnswer) { $defaultAnswerDisplay = 'No'; $buttonType = 0x104; }
$answer = $msgBoxTimeout
try {
$timeout = 10
$question = "Do you need to install $($packageName)? Defaults to `'$defaultAnswerDisplay`' after $timeout seconds"
$msgBox = New-Object -ComObject WScript.Shell
$answer = $msgBox.Popup($question, $timeout, "Install $packageName", $buttonType)
}
catch {
}
if ($answer -eq $yes -or ($answer -eq $msgBoxTimeout -and $defaultAnswer -eq $true)) {
write-host "Installing '$packageName'"
return $true
}
write-host "Not installing '$packageName'"
return $false
}
# Variables
$thisDir = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
$configDir = "${thisDir}\config"
$scriptDir = "${thisDir}\scripts"
# Chocoatey Packages Setup
if (($SetupChocoPackages -eq $true) -or (Install-NeededFor 'Chocolatey Packages')) {
$chocoPackagesConfig = "${configDir}\chocoPackages.config"
if(Test-Path -Path $chocoPackagesConfig) {
& "${scriptDir}\setup-choco-pkgs.ps1" -chocoPackagesConfig $chocoPackagesConfig
} else {
Write-Error "config file not found: ${chocoPackagesConfig}"
}
}
# Powershell Modules Setup
if(($SetupPoshModules -eq $true) -or (Install-NeededFor 'PowerShell Modules')) {
$poshModulesConfig = "${configDir}\poshModules.config"
if(Test-Path -Path $poshModulesConfig) {
& "${scriptDir}\setup-posh-modules.ps1" -poshModulesConfig $poshModulesConfig
} else {
Write-Error "config file not found: ${poshModulesConfig}"
}
}
# WrapUp
Write-Host "If you have made it here without errors, you should be setup and ready to hack on the apps."
Write-Warning "If you see any failures happen, you may want to reboot and continue to let installers catch up. This script is idempotent and will only apply changes that have not yet been applied."