From 8bd53587d180d02cdeaec6776202b3e8dec1d503 Mon Sep 17 00:00:00 2001 From: Kareem Horstink Date: Thu, 25 Jun 2026 17:17:55 +0000 Subject: [PATCH] add publish scripts (PowerShell + bash) for single-command cross-platform builds --- publish.ps1 | 31 +++++++++++++++++++++++++++++++ publish.sh | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 publish.ps1 create mode 100644 publish.sh diff --git a/publish.ps1 b/publish.ps1 new file mode 100644 index 0000000..42c72db --- /dev/null +++ b/publish.ps1 @@ -0,0 +1,31 @@ +# Publish all targets for SRTto3Dsubtitles +# Usage: ./publish.ps1 + +$ErrorActionPreference = "Stop" + +$targets = @( + @{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "linux-x64"; Name = "ConvertSRTto3DASS-linux-x64" }, + @{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "win-x64"; Name = "ConvertSRTto3DASS-win-x64.exe" }, + @{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "osx-x64"; Name = "ConvertSRTto3DASS-osx-x64" }, + @{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "osx-arm64"; Name = "ConvertSRTto3DASS-osx-arm64" }, + @{ Project = "ConvertSRTto3DASS.Gui"; Runtime = "win-x64"; Name = "ConvertSRTto3DASS-GUI-Win-x64.exe" } +) + +foreach ($t in $targets) { + Write-Host "Publishing $($t.Name)..." -ForegroundColor Cyan + dotnet publish $t.Project -c Release -r $t.Runtime ` + --self-contained false ` + -p:PublishSingleFile=true ` + -p:IncludeNativeLibrariesForSelfExtract=true ` + -p:OutputType=Exe ` + -p:OutputPath="publish\$($t.Runtime)\" + + $src = "publish\$($t.Runtime)\$($t.Project).exe" + $dst = "publish\$($t.Name)" + if (Test-Path $src) { + Move-Item $src $dst -Force + Write-Host " -> $dst" -ForegroundColor Green + } +} + +Write-Host "`nDone! Published files in publish/`n" -ForegroundColor Green diff --git a/publish.sh b/publish.sh new file mode 100644 index 0000000..8dc19a5 --- /dev/null +++ b/publish.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Publish all targets for SRTto3Dsubtitles +# Usage: ./publish.sh + +set -e + +declare -a targets=( + "ConvertSRTto3DASS.Cli:linux-x64:ConvertSRTto3DASS-linux-x64" + "ConvertSRTto3DASS.Cli:win-x64:ConvertSRTto3DASS-win-x64.exe" + "ConvertSRTto3DASS.Cli:osx-x64:ConvertSRTto3DASS-osx-x64" + "ConvertSRTto3DASS.Cli:osx-arm64:ConvertSRTto3DASS-osx-arm64" + "ConvertSRTto3DASS.Gui:win-x64:ConvertSRTto3DASS-GUI-Win-x64.exe" +) + +rm -rf publish +mkdir -p publish + +for entry in "${targets[@]}"; do + IFS=':' read -r project runtime name <<< "$entry" + + echo "Publishing $name..." + dotnet publish "$project" -c Release -r "$runtime" \ + --self-contained false \ + -p:PublishSingleFile=true \ + -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:OutputType=Exe \ + -p:OutputPath="publish/$runtime/" + + src="publish/$runtime/$project.exe" + dst="publish/$name" + if [ -f "$src" ]; then + mv "$src" "$dst" + echo " -> $dst" + fi +done + +echo "" +echo "Done! Published files in publish/"