94 lines
3.7 KiB
PowerShell
94 lines
3.7 KiB
PowerShell
param(
|
|
[ValidateSet("Debug", "Release")]
|
|
[string]$Configuration = "Debug"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$projectRoot = $PSScriptRoot
|
|
$commonUsageProject = Join-Path $projectRoot "CommonUsage-MultiVehicleSync\commonusage\CommonUsage.csproj"
|
|
$medullaProject = Join-Path $projectRoot "MedullaAdapter\MedullaAdapter.csproj"
|
|
$multiWheelProject = Join-Path $projectRoot "MultiWheelC\MultiWheelC.csproj"
|
|
|
|
$commonUsageBuildDirectory = Join-Path $projectRoot "CommonUsage-MultiVehicleSync\commonusage\bin\$Configuration\netstandard2.0"
|
|
$commonUsageBuildDll = Join-Path $commonUsageBuildDirectory "CommonUsage.dll"
|
|
$commonUsageReferenceDll = Join-Path $projectRoot "ref\CommonUsage.dll"
|
|
|
|
$medullaBuildDirectory = Join-Path $projectRoot "MedullaAdapter\build\Medulla\plugins"
|
|
$multiWheelBuildDirectory = Join-Path $projectRoot "MultiWheelC\build\Clumsy"
|
|
|
|
$mOutputDirectory = Join-Path $projectRoot "output\M"
|
|
$cOutputDirectory = Join-Path $projectRoot "output\C"
|
|
|
|
function Invoke-ProjectBuild {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$ProjectPath
|
|
)
|
|
|
|
Write-Host "Building: $ProjectPath" -ForegroundColor Cyan
|
|
& dotnet build $ProjectPath --configuration $Configuration --no-restore
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Build failed: $ProjectPath (dotnet exit code: $LASTEXITCODE)"
|
|
}
|
|
}
|
|
|
|
function Assert-BuildFile {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Path
|
|
)
|
|
|
|
if (-not (Test-Path -LiteralPath $Path -PathType Leaf)) {
|
|
throw "Expected build file was not found: $Path"
|
|
}
|
|
}
|
|
|
|
function Copy-BuildFile {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Source,
|
|
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$DestinationDirectory
|
|
)
|
|
|
|
Assert-BuildFile -Path $Source
|
|
Copy-Item -LiteralPath $Source -Destination $DestinationDirectory -Force
|
|
Write-Host "Copied: $Source -> $DestinationDirectory" -ForegroundColor DarkGray
|
|
}
|
|
|
|
Write-Host "Building and packaging MyParking. Configuration: $Configuration" -ForegroundColor Green
|
|
|
|
# CommonUsage must be built first and copied to ref for downstream projects.
|
|
Invoke-ProjectBuild -ProjectPath $commonUsageProject
|
|
Assert-BuildFile -Path $commonUsageBuildDll
|
|
|
|
$referenceDirectory = Split-Path -Parent $commonUsageReferenceDll
|
|
New-Item -ItemType Directory -Path $referenceDirectory -Force | Out-Null
|
|
Copy-Item -LiteralPath $commonUsageBuildDll -Destination $commonUsageReferenceDll -Force
|
|
Write-Host "Updated CommonUsage reference: $commonUsageReferenceDll" -ForegroundColor Green
|
|
|
|
# Build the M and C projects against the updated ref/CommonUsage.dll.
|
|
Invoke-ProjectBuild -ProjectPath $medullaProject
|
|
Invoke-ProjectBuild -ProjectPath $multiWheelProject
|
|
|
|
New-Item -ItemType Directory -Path $mOutputDirectory -Force | Out-Null
|
|
New-Item -ItemType Directory -Path $cOutputDirectory -Force | Out-Null
|
|
|
|
# Package the M-layer files.
|
|
Copy-BuildFile -Source (Join-Path $medullaBuildDirectory "MedullaAdapter.dll") -DestinationDirectory $mOutputDirectory
|
|
Copy-BuildFile -Source (Join-Path $medullaBuildDirectory "MedullaAdapter.pdb") -DestinationDirectory $mOutputDirectory
|
|
Copy-BuildFile -Source (Join-Path $medullaBuildDirectory "CommonUsage.dll") -DestinationDirectory $mOutputDirectory
|
|
|
|
# Package the C-layer files.
|
|
Copy-BuildFile -Source (Join-Path $multiWheelBuildDirectory "MultiWheelC.dll") -DestinationDirectory $cOutputDirectory
|
|
Copy-BuildFile -Source (Join-Path $multiWheelBuildDirectory "MultiWheelC.pdb") -DestinationDirectory $cOutputDirectory
|
|
Copy-BuildFile -Source (Join-Path $multiWheelBuildDirectory "CommonUsage.dll") -DestinationDirectory $cOutputDirectory
|
|
|
|
Write-Host ""
|
|
Write-Host "Build and packaging completed." -ForegroundColor Green
|
|
Write-Host "M output: $mOutputDirectory"
|
|
Write-Host "C output: $cOutputDirectory"
|