-
Notifications
You must be signed in to change notification settings - Fork 37
/
SMLHelper-post-build.ps1
87 lines (76 loc) · 2.73 KB
/
SMLHelper-post-build.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
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$SolutionDir,
[Parameter(Mandatory)]
[string]$ConfigurationName,
[Parameter(Mandatory)]
[string]$TargetDir,
[Parameter(Mandatory)]
[string]$ProjectDir
)
<#
Creates or updates a zip archive
Takes three arguments:
-Path is the string path of the the files/folder to add the zip archive
-DestinationPath is the string path to the output .zip archive
-Fresh is a toggle. If set, the archive will be deleted prior to archiving. Otherwise, the new contents will be added to the archive as-is.
#>
function Zip
{
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$Path,
[Parameter(Mandatory)]
[string]$DestinationPath,
[switch]$Fresh
)
if ($Fresh -and (Test-Path $DestinationPath)) {
$null = Remove-Item -Path $DestinationPath
}
$7ZipPath = [System.IO.Path]::Combine($SolutionDir, "packages", "7-Zip.CommandLine.18.1.0", "tools", "7za.exe")
if (Test-Path $7ZipPath)
{ # Use 7Zip if available
& $7ZipPath "u" $DestinationPath $Path
}
else
{ # Otherwise fallback to Compress-Archive
if ($Fresh)
{
Compress-Archive -Path $Path -DestinationPath $DestinationPath -Force
}
else
{
Compress-Archive -Path $Path -DestinationPath $DestinationPath -Update
}
}
}
$buildPath = switch ($ConfigurationName.ToUpper())
{
{($_ -like "SN*")} { "Modding Helper" }
{($_ -like "BZ*")} { "SMLHelper_BZ" }
default { "Modding Helper" }
}
$pluginsDir = [System.IO.Path]::Combine($ProjectDir, "bin", $ConfigurationName, "plugins")
# Remove prep dir and create fresh
if (Test-Path $pluginsDir)
{
$null = Remove-Item -Path $pluginsDir -Force -Recurse
}
$null = New-Item -Path $pluginsDir -ItemType "directory"
$buildDir = [System.IO.Path]::Combine($pluginsDir, $buildPath)
$null = New-Item -Path $buildDir -ItemType "directory"
# Copy core mod files to build dir
foreach ($file in "SMLHelper.xml", "SMLHelper.dll")
{
Copy-Item $([System.IO.Path]::Combine($TargetDir, $file)) -Destination $buildDir
}
# Zip the standard QMod build
$buildZipPath = [System.IO.Path]::Combine($TargetDir, "SMLHelper_$($ConfigurationName).zip")
$null = Zip -Path $pluginsDir -DestinationPath $buildZipPath -Fresh
# Zip the Thunderstore build
$thunderstoreMetadataPath = [System.IO.Path]::Combine($ProjectDir, "ThunderstoreMetadata", $ConfigurationName, "*")
$thunderstoreZipPath = [System.IO.Path]::Combine($TargetDir, "SMLHelper_$($ConfigurationName)_Thunderstore.zip")
$null = Zip -Path $pluginsDir -DestinationPath $thunderstoreZipPath -Fresh
$null = Zip -Path $thunderstoreMetadataPath -DestinationPath $thunderstoreZipPath