forked from scottluskcis/dev-env-setup
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.ps1
More file actions
66 lines (57 loc) · 2.12 KB
/
Copy pathsetup.ps1
File metadata and controls
66 lines (57 loc) · 2.12 KB
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."