-
Notifications
You must be signed in to change notification settings - Fork 4
/
debug-lostdoc.ps1
120 lines (113 loc) · 6.58 KB
/
debug-lostdoc.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
param($ldPath = $(throw "ldpath required"));
[string]$script:verbose = "";
$choices = @(
(New-Object -TypeName PSObject @{
C = "Extract System.Web.*.dll from Web.Host bin folder";
A = @((Get-ChildItem -Path ..\..\..\LBi.LostDoc.Repository.Web.Host\bin\System.Web.*.dll).FullName | %{ "Extract -IncludeBclDocComments -Path {0} -Output .\tmp\" -f $_ })
}),
(New-Object -TypeName PSObject @{
C = "Extract *.dll from Web.Host bin folder";
A = @((Get-ChildItem -Path ..\..\..\LBi.LostDoc.Repository.Web.Host\bin\*.dll).FullName | %{ "Extract -IncludeBclDocComments -Path {0} -Output .\tmp\" -f $_ })
}),
(New-Object -TypeName PSObject @{
C = "Extract Company.Project.Library";
A = @("Extract -IncludeBclDocComments -Path ..\..\..\Company.Project.Library\bin\Debug\Company.Project.Library.dll -Output .\tmp\")
}),
(New-Object -TypeName PSObject @{
C = "Extract Company.Project.AnotherLibrary";
A = @("Extract -IncludeBclDocComments -Path ..\..\..\Company.Project.AnotherLibrary\bin\Debug\Company.Project.AnotherLibrary.dll -Output .\tmp\")
}),
(New-Object -TypeName PSObject @{
C = "Extract All";
A = @("Extract -IncludeBclDocComments -Path ..\..\..\Company.Project.AnotherLibrary\bin\Debug\Company.Project.AnotherLibrary.dll -Output .\tmp\",
"Extract -IncludeBclDocComments -Path ..\..\..\Company.Project.Library\bin\Debug\Company.Project.Library.dll -Output .\tmp\")
}),
(New-Object -TypeName PSObject @{
C = "Extract with multiple versions";
A = @(
{ ..\..\..\build-test-dlls.ps1 },
"Extract -IncludeBclDocComments -Path .\tmp\v1\Company.Project.AnotherLibrary.dll -Output .\tmp\",
"Extract -IncludeBclDocComments -Path .\tmp\v1\Company.Project.Library.dll -Output .\tmp\",
"Extract -IncludeBclDocComments -Path .\tmp\v2\Company.Project.AnotherLibrary.dll -Output .\tmp\",
"Extract -IncludeBclDocComments -Path .\tmp\v2\Company.Project.Library.dll -Output .\tmp\"
)
}),
(New-Object -TypeName PSObject @{
C = "Template";
A = @("Template -Path .\Tmp -Template Library -Force -Output .\Html")
}),
(New-Object -TypeName PSObject @{
C = "Template with Custom logo";
A = @("Template -Path .\Tmp -Template Library -Force -Output .\Html -Arguments @{LogoUrl = 'duck.jpg'}")
}),
(New-Object -TypeName PSObject @{
C = "Open output";
A = {
Invoke-Item -Path .\Html\Library.html
}
}),
(New-Object -TypeName PSObject @{
C = "Help";
A = @("-Help -Full")
}),
(New-Object -TypeName PSObject @{
C = "Clear output";
A ={
if (Test-Path -Path .\tmp -PathType Container) {
Remove-Item -Path .\tmp -Recurse -Force
}
if (Test-Path -Path .\Html -PathType Container) {
Remove-Item -Path .\Html -Recurse -Force
}
}
}),
(New-Object -TypeName PSObject @{
C = "Toggle verobisty";
A ={
if ($script:verbose -eq "") {
$script:verbose = "-Verbose";
} elseif ($script:verbose -eq "-Verbose") {
$script:verbose = "-Quiet";
} else {
$script:verbose = "";
}
Write-Host "Flag: $verbose"
}
}),
(New-Object -TypeName PSObject @{
C = "Exit";
A ={ exit 0;}
})
);
$ErrorActionPreference = "Continue"
while ($true) {
[int]$i = 1;
$map = @{};
Write-Host
foreach ($kvp in $choices) {
$map.Add($i, $kvp.A);
" [{0}] {1}" -f $i++,$kvp.C
}
Write-Host
$choice = Read-Host -Prompt "Choice"
Write-Host
$args = $map[[int]$choice];
if ($args -is [ScriptBlock]) {
& $args;
} else {
foreach ($arg in $args) {
if ($arg -is [ScriptBlock]) {
& $arg;
} else {
[System.AppDomainSetup]$setup = New-Object -TypeName System.AppDomainSetup -Property @{ApplicationBase = [System.IO.Path]::GetDirectoryName($ldPath)}
[System.AppDomain]$app = [System.AppDomain]::CreateDomain("lostdoc", [System.AppDomain]::CurrentDomain.Evidence, $setup)
if ($script:verbose -ne "") {
$arg += ' ' + $script:verbose;
}
"Launching with arguments: " + $arg;
$app.ExecuteAssembly($ldPath, $arg)
[System.AppDomain]::Unload($app);
}
}
}
}