Skip to content

Commit e4c2cc8

Browse files
WIP: first build.ps1
1 parent 7588c7a commit e4c2cc8

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

build.ps1

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#!/usr/bin/env pwsh
2+
param(
3+
[Parameter()]
4+
[switch]
5+
$Clean,
6+
7+
[Parameter()]
8+
[switch]
9+
$BootstrapBuildEnv
10+
)
11+
12+
$NeededTools = @{
13+
OpenSsl = "openssl for macOS"
14+
DotNet451TargetingPack = ".NET 4.5.1 Targeting Pack"
15+
PowerShellGet = "PowerShellGet latest"
16+
InvokeBuild = "InvokeBuild latest"
17+
}
18+
19+
if ((-not $PSVersionTable["OS"]) -or $PSVersionTable["OS"].Contains("Windows")) {
20+
$OS = "Windows"
21+
} elseif ($PSVersionTable["OS"].Contains("Darwin")) {
22+
$OS = "macOS"
23+
} else {
24+
$OS = "Linux"
25+
}
26+
27+
28+
function needsOpenSsl () {
29+
if ($OS -eq "macOS") {
30+
try {
31+
$opensslVersion = (openssl version)
32+
} catch {
33+
return $true
34+
}
35+
}
36+
return $false
37+
}
38+
39+
function needsDotNet451TargetingPack () {
40+
# how could we check for this?
41+
return $false
42+
}
43+
44+
function needsPowerShellGet () {
45+
if (Get-Module -ListAvailable -Name PowerShellGet) {
46+
return $false
47+
}
48+
return $true
49+
}
50+
51+
function needsInvokeBuild () {
52+
if (Get-Module -ListAvailable -Name InvokeBuild) {
53+
return $false
54+
}
55+
return $true
56+
}
57+
58+
function getMissingTools () {
59+
$missingTools = @()
60+
61+
if (needsOpenSsl) {
62+
$missingTools += $NeededTools.OpenSsl
63+
}
64+
if (needsDotNet451TargetingPack) {
65+
$missingTools += $NeededTools.DotNet451TargetingPack
66+
}
67+
if (needsPowerShellGet) {
68+
$missingTools += $NeededTools.PowerShellGet
69+
}
70+
if (needsInvokeBuild) {
71+
$missingTools += $NeededTools.InvokeBuild
72+
}
73+
74+
return $missingTools
75+
}
76+
77+
function hasMissingTools () {
78+
return ((getMissingTools).Count -gt 0)
79+
}
80+
81+
if ($BootstrapBuildEnv) {
82+
$string = "Here is what your environment is missing:`n"
83+
$missingTools = getMissingTools
84+
if (($missingTools).Count -eq 0) {
85+
$string += "* nothing!`n`n Run this script without a flag to build or a -Clean to clean."
86+
} else {
87+
$missingTools | ForEach-Object {$string += "* $_`n"}
88+
$string += "`nAll instructions for installing these tools can be found on PowerShell Editor Services' Github:`n" `
89+
+ "https://github.com/powershell/PowerShellEditorServices#development"
90+
}
91+
Write-Host "`n$string`n"
92+
} elseif ($Clean) {
93+
Invoke-Build Clean
94+
} else {
95+
Invoke-Build Build
96+
}

0 commit comments

Comments
 (0)