-
Notifications
You must be signed in to change notification settings - Fork 1
/
aoc2023.ps1
executable file
·85 lines (74 loc) · 1.86 KB
/
aoc2023.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
#!/usr/bin/env pwsh
[CmdletBinding()]
param (
[switch] $Release,
[switch] $Full,
[switch] $All,
[switch] $NoBuild,
[ValidateSet(
"day1", "day2", "day3", "day4", "day5", "day6", "day7", "day8", "day9"
, "day10", "day11", "day12", "day13", "day14", "day15", "day16"
, "day17", "day18", "day19", "day20", "day21", "day22"
, "day23", "day24", "day25"
)]
[string] $Day
)
function ExecSafe([scriptblock] $cmd) {
& $cmd
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
$AllDays = @(
"day1", "day2", "day3", "day4", "day5", "day6", "day7", "day8", "day9"
, "day10", "day11", "day12", "day13", "day14", "day15", "day16"
, "day17", "day18", "day19", "day20", "day21", "day22"
, "day23", "day24", "day25"
)
$root = $PSScriptRoot
$cliScript = Join-Path -Path $root -ChildPath "cli.ps1" -Resolve
if ($All) {
$NoBuild = $false
$SelectedDays = $AllDays
if ($Day) {
$SelectedDays = @()
$DidFind = $false
foreach ($ad in $AllDays) {
if ($ad -eq $Day) {
$DidFind = $true
$SelectedDays += $ad
}
elseif ($DidFind) {
$SelectedDays += $ad
}
}
}
foreach ($ad in $SelectedDays) {
$cliArgs = @(
"./visp/examples/aoc2023/$ad.visp"
)
if ($Full) {
$cliArgs += "full"
}
if ($Release) {
$cliArgs += "--release"
}
Write-Host "Running: $ad"
ExecSafe {
& $cliScript -NoBuild:$NoBuild @cliArgs
}
$NoBuild = $true
}
}
else {
$cliArgs = @(
"./visp/examples/aoc2023/$Day.visp"
)
if ($Full) {
$cliArgs += "full"
}
if ($Release) {
$cliArgs += "--release"
}
ExecSafe {
& $cliScript -NoBuild:$NoBuild @cliArgs
}
}