-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule-install.ps1
87 lines (78 loc) · 1.77 KB
/
module-install.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
param (
$installationdrive = "C",
$modulename
)
$scriptDir = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
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
}
function InstallModule
{
param(
[string] $moduleDir = ''
)
if (Test-Path $moduleDir/install.ps1 -PathType Leaf)
{
& "${moduleDir}/install.ps1" -installationdrive ${installationDrive}
}
if (Test-Path $moduleDir/config.ps1 -PathType Leaf)
{
& "${moduleDir}/config.ps1" -installationdrive ${installationDrive}
}
}
if ($modulename -eq "all")
{
$moduleOrder = @(
'git',
'scoop',
'wezterm',
# Neovim module install python3 and node modules as part of it
'neovim',
'dotnet',
'omnisharp',
'powershell',
'lazygit'
)
foreach ($module in $moduleOrder)
{
if (Install-NeededFor $module)
{
InstallModule -moduleDir "${scriptDir}\$module"
}
}
} else
{
InstallModule -moduleDir "${scriptDir}\$modulename"
}