diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ac18f37d..3c6a38f6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -128,12 +128,16 @@ jobs: -p:Version=${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }} -p:CSharpier_Bypass=true -p:EncryptionSalt=${{ secrets.ENCRYPTION_SALT || 'HimalayanPinkSalt' }} - -p:PublishMacOSBundle=${{ startsWith(matrix.rid, 'osx-') }} --output ${{ matrix.app }}/bin/publish/ --configuration Release --runtime ${{ matrix.rid }} --self-contained + - name: Rename macOS bundle + if: ${{ startsWith(matrix.rid, 'osx-') && matrix.app == 'DiscordChatExporter.Gui' }} + run: > + mv ${{ matrix.app }}/bin/publish/DCE.app ${{ matrix.app }}/bin/publish/${{ matrix.asset }}.app + - name: Upload app binaries uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: diff --git a/Directory.Packages.props b/Directory.Packages.props index 4c1bb349..3ac66b75 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,6 +20,7 @@ + diff --git a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj index 11c78eaa..e3bda05b 100644 --- a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj +++ b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj @@ -7,6 +7,12 @@ false + + me.tyrrrz.discordchatexporter + DCE + DiscordChatExporter + + HimalayanPinkSalt @@ -16,10 +22,6 @@ - - false - - @@ -34,6 +36,7 @@ + @@ -46,11 +49,4 @@ - - - - diff --git a/DiscordChatExporter.Gui/PublishMacOSBundle.csx b/DiscordChatExporter.Gui/PublishMacOSBundle.csx deleted file mode 100755 index 38e834e9..00000000 --- a/DiscordChatExporter.Gui/PublishMacOSBundle.csx +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/dotnet -- -#:package CliFx - -using CliFx; -using CliFx.Binding; -using CliFx.Infrastructure; - -[Command(Description = "Publishes the GUI app as a macOS .app bundle.")] -public partial class PublishMacOSBundleCommand : ICommand -{ - private const string BundleName = "DiscordChatExporter.app"; - private const string AppName = "DiscordChatExporter"; - private const string AppCopyright = "© Oleksii Holub"; - private const string AppIdentifier = "me.Tyrrrz.DiscordChatExporter"; - private const string AppSpokenName = "Discord Chat Exporter"; - private const string AppIconName = "AppIcon"; - - [CommandOption("publish-dir", Description = "Path to the publish output directory.")] - public required string PublishDirPath { get; set; } - - [CommandOption("icons-file", Description = "Path to the .icns icons file.")] - public required string IconsFilePath { get; set; } - - [CommandOption("full-version", Description = "Full version string (e.g., '1.2.3.4').")] - public required string FullVersion { get; set; } - - [CommandOption("short-version", Description = "Short version string (e.g., '1.2.3').")] - public required string ShortVersion { get; set; } - - public async ValueTask ExecuteAsync(IConsole console) - { - // Set up paths - var publishDirPath = Path.GetFullPath(PublishDirPath); - var tempDirPath = Path.GetFullPath( - Path.Combine(publishDirPath, "../publish-macos-app-temp") - ); - - // Ensure the temporary directory is clean before use in case a previous run crashed - if (Directory.Exists(tempDirPath)) - Directory.Delete(tempDirPath, true); - - var bundleDirPath = Path.Combine(tempDirPath, BundleName); - var contentsDirPath = Path.Combine(bundleDirPath, "Contents"); - - try - { - // Copy icons into the .app's Resources folder - Directory.CreateDirectory(Path.Combine(contentsDirPath, "Resources")); - File.Copy( - IconsFilePath, - Path.Combine(contentsDirPath, "Resources", "AppIcon.icns"), - true - ); - - // Generate the Info.plist metadata file with the app information - // lang=xml - var plistContent = $""" - - - - - CFBundleDisplayName - {AppName} - CFBundleName - {AppName} - CFBundleExecutable - {AppName} - NSHumanReadableCopyright - {AppCopyright} - CFBundleIdentifier - {AppIdentifier} - CFBundleSpokenName - {AppSpokenName} - CFBundleIconFile - {AppIconName} - CFBundleIconName - {AppIconName} - CFBundleVersion - {FullVersion} - CFBundleShortVersionString - {ShortVersion} - NSHighResolutionCapable - - CFBundlePackageType - APPL - - - """; - - await File.WriteAllTextAsync(Path.Combine(contentsDirPath, "Info.plist"), plistContent); - - // Delete the previous bundle if it exists - var existingBundlePath = Path.Combine(publishDirPath, BundleName); - if (Directory.Exists(existingBundlePath)) - Directory.Delete(existingBundlePath, true); - - // Move all files from the publish directory into the MacOS directory - Directory.CreateDirectory(Path.Combine(contentsDirPath, "MacOS")); - foreach (var entryPath in Directory.GetFileSystemEntries(publishDirPath)) - { - var destinationPath = Path.Combine( - contentsDirPath, - "MacOS", - Path.GetFileName(entryPath) - ); - - if (Directory.Exists(entryPath)) - Directory.Move(entryPath, destinationPath); - else - File.Move(entryPath, destinationPath); - } - - // Move the final bundle into the publish directory for upload - Directory.Move(bundleDirPath, Path.Combine(publishDirPath, BundleName)); - } - finally - { - // Clean up the temporary directory - if (Directory.Exists(tempDirPath)) - Directory.Delete(tempDirPath, true); - } - } -} diff --git a/favicon.icns b/favicon.icns deleted file mode 100644 index 958f7d03..00000000 Binary files a/favicon.icns and /dev/null differ