forked from MindscapeHQ/raygun4net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpackageWebApi.ps1
78 lines (66 loc) · 2.89 KB
/
packageWebApi.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
properties {
$root = $psake.build_script_dir
$nuget_dir = "$root\.nuget"
$release_dir = "$root\release\"
$build_dir = "$root\build\webapi"
$build_dir_signed = "$root\build\signed\webapi"
$nuspec = "$root\Mindscape.Raygun4Net.WebApi.nuspec"
$nuspec_signed = "$root\Mindscape.Raygun4Net.WebApi.Signed.nuspec"
$env:Path += ";$nuget_dir"
}
task default -depends Zip
task Clean {
remove-item -force -recurse $release_dir -ErrorAction SilentlyContinue | Out-Null
}
task Init -depends Clean {
new-item $release_dir -itemType directory | Out-Null
}
task Package -depends Init {
exec { nuget pack $nuspec -OutputDirectory $release_dir }
exec { nuget pack $nuspec_signed -OutputDirectory $release_dir }
}
task Zip -depends Package {
$release = Get-ChildItem $release_dir | Select-Object -f 1
$nupkg_name = $release.Name
$nupkg_name = $nupkg_name -replace "Mindscape.Raygun4Net.", "v"
$version = $nupkg_name -replace ".nupkg", ""
$outerfolder = $release_dir + $version
$versionfolder = $outerfolder + "\" + $version
$versionfolderwebapi = $versionfolder + "\webapi"
$signedfolder = $versionfolder + "\signed"
$signedfolderwebapi = $signedfolder + "\webapi"
new-item $versionfolder -itemType directory | Out-Null
new-item $versionfolderwebapi -itemType directory | Out-Null
new-item $signedfolder -itemType directory | Out-Null
new-item $signedfolderwebapi -itemType directory | Out-Null
# .NET Web API
copy-item $build_dir/Mindscape.Raygun4Net.WebApi.dll $versionfolderwebapi
copy-item $build_dir/Mindscape.Raygun4Net.WebApi.pdb $versionfolderwebapi
copy-item $build_dir/Mindscape.Raygun4Net.dll $versionfolderwebapi
copy-item $build_dir/Mindscape.Raygun4Net.pdb $versionfolderwebapi
# Signed .NET Web API
copy-item $build_dir_signed/Mindscape.Raygun4Net.WebApi.dll $signedfolderwebapi
copy-item $build_dir_signed/Mindscape.Raygun4Net.WebApi.pdb $signedfolderwebapi
copy-item $build_dir_signed/Mindscape.Raygun4Net.dll $signedfolderwebapi
copy-item $build_dir_signed/Mindscape.Raygun4Net.pdb $signedfolderwebapi
$zipFullName = $release_dir + $version + ".zip"
Get-ChildItem $outerfolder | Add-Zip $zipFullName
}
function Add-Zip # usage: Get-ChildItem $folder | Add-Zip $zipFullName
{
param([string]$zipfilename)
if(!(test-path($zipfilename)))
{
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipfilename).IsReadOnly = $false
}
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
foreach($file in $input)
{
$zipPackage.CopyHere($file.FullName)
do {
Start-sleep 2
} until ( $zipPackage.Items() | select {$_.Name -eq $file.Name} )
}
}