Files

41 lines
1.8 KiB
PowerShell

$ErrorActionPreference = 'Stop'
$projectRoot = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..'))
$artifactRoot = [IO.Path]::GetFullPath((Join-Path $projectRoot 'artifacts'))
$staging = [IO.Path]::GetFullPath((Join-Path $artifactRoot 'staging'))
$output = [IO.Path]::GetFullPath((Join-Path $artifactRoot 'plugin'))
foreach ($path in @($artifactRoot, $staging, $output)) {
if (-not $path.StartsWith($projectRoot + [IO.Path]::DirectorySeparatorChar, [StringComparison]::OrdinalIgnoreCase)) {
throw "Refusing to use path outside project: $path"
}
}
Push-Location (Join-Path $projectRoot 'MyAgent\MyAgent.Web')
try {
npm ci
if ($LASTEXITCODE -ne 0) { throw 'npm ci failed' }
npm run build
if ($LASTEXITCODE -ne 0) { throw 'frontend build failed' }
}
finally { Pop-Location }
if (Test-Path -LiteralPath $staging) { Remove-Item -LiteralPath $staging -Recurse -Force }
if (Test-Path -LiteralPath $output) { Remove-Item -LiteralPath $output -Recurse -Force }
New-Item -ItemType Directory -Path $staging -Force | Out-Null
New-Item -ItemType Directory -Path $output -Force | Out-Null
dotnet publish (Join-Path $projectRoot 'Shirobot.Plugin.MyAgent.csproj') -c Release -o $staging
if ($LASTEXITCODE -ne 0) { throw 'plugin publish failed' }
$files = @('MyAgent.dll', 'Shirobot.Plugin.MyAgent.dll', 'Shirobot.Plugin.MyAgent.deps.json', 'HtmlAgilityPack.dll')
$files += Get-ChildItem -LiteralPath $staging -Filter 'UglyToad.PdfPig*.dll' -File | Select-Object -ExpandProperty Name
foreach ($file in $files) {
$from = Join-Path $staging $file
if (-not (Test-Path -LiteralPath $from)) { throw "Missing publish file: $file" }
Copy-Item -LiteralPath $from -Destination (Join-Path $output $file)
}
Copy-Item -LiteralPath (Join-Path $staging 'wwwroot') -Destination (Join-Path $output 'wwwroot') -Recurse
Write-Host "Plugin package ready: $output"