mirror of
https://github.com/skoelle/marcer-gamedvd-launcher.git
synced 2026-09-17 18:50:25 +00:00
renaming
This commit is contained in:
@@ -47,19 +47,19 @@ jobs:
|
|||||||
if: matrix.os == 'windows-latest'
|
if: matrix.os == 'windows-latest'
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
Compress-Archive -Path "HatariZipLauncher/bin/Release/net10.0/${{ matrix.rid }}/*" -DestinationPath "HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip"
|
Compress-Archive -Path "MarcerGameDvdLauncher/bin/Release/net10.0/${{ matrix.rid }}/*" -DestinationPath "MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip"
|
||||||
|
|
||||||
- name: Create ZIP (Linux/macOS)
|
- name: Create ZIP (Linux/macOS)
|
||||||
if: matrix.os != 'windows-latest'
|
if: matrix.os != 'windows-latest'
|
||||||
run: |
|
run: |
|
||||||
cd HatariZipLauncher/bin/Release/net10.0/${{ matrix.rid }}
|
cd MarcerGameDvdLauncher/bin/Release/net10.0/${{ matrix.rid }}
|
||||||
zip -r ../../../HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip .
|
zip -r ../../../MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip .
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}
|
name: MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}
|
||||||
path: HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip
|
path: MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip
|
||||||
|
|
||||||
release:
|
release:
|
||||||
needs: build
|
needs: build
|
||||||
@@ -91,7 +91,7 @@ jobs:
|
|||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
name: HatariZipLauncher ${{ github.ref_name }}
|
name: MarcerGameDvdLauncher ${{ github.ref_name }}
|
||||||
body_path: release-notes.md
|
body_path: release-notes.md
|
||||||
files: artifacts/**/*.zip
|
files: artifacts/**/*.zip
|
||||||
generate_release_notes: false
|
generate_release_notes: false
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
// Configuration POCOs separated into their own file for clarity
|
// Configuration POCOs separated into their own file for clarity
|
||||||
public class AppHatariConfig
|
public class AppHatariConfig
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
// Manages loading, saving and querying favorite ZIP paths.
|
// Manages loading, saving and querying favorite ZIP paths.
|
||||||
public class FavoritesService
|
public class FavoritesService
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
public class HatariLauncher
|
public class HatariLauncher
|
||||||
{
|
{
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
// Encapsulates application lifecycle: load config, initialize components, run navigation
|
// Encapsulates application lifecycle: load config, initialize components, run navigation
|
||||||
public class LauncherApp
|
public class LauncherApp
|
||||||
+2
@@ -4,6 +4,8 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RootNamespace>MarcerGameDvdLauncher</RootNamespace>
|
||||||
|
<AssemblyName>MarcerGameDvdLauncher</AssemblyName>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
public class MenuRenderer
|
public class MenuRenderer
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
public class NavigationController
|
public class NavigationController
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
public enum EntryKind { Directory, Zip }
|
public enum EntryKind { Directory, Zip }
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace HatariZipLauncher
|
namespace MarcerGameDvdLauncher
|
||||||
{
|
{
|
||||||
// Small helpers refactored into their own file to keep Program.cs focused.
|
// Small helpers refactored into their own file to keep Program.cs focused.
|
||||||
internal static class ProgramHelpers
|
internal static class ProgramHelpers
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace HatariZipLauncher;
|
namespace MarcerGameDvdLauncher;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Centralized service for error and user message output in the console UI.
|
/// Centralized service for error and user message output in the console UI.
|
||||||
@@ -4,17 +4,17 @@ applyTo: '**'
|
|||||||
|
|
||||||
## Module Overview (Marcer GameDVD Launcher)
|
## Module Overview (Marcer GameDVD Launcher)
|
||||||
|
|
||||||
The implementation is split into focused modules (files) under the `HatariZipLauncher/` folder. Keep this section up to date when files are added, removed or responsibilities change.
|
The implementation is split into focused modules (files) under the `MarcerGameDvdLauncher/` folder. Keep this section up to date when files are added, removed or responsibilities change.
|
||||||
|
|
||||||
- HatariZipLauncher/Program.cs: Minimal entry point. Sets console title and starts the application by creating `LauncherApp`.
|
- MarcerGameDvdLauncher/Program.cs: Minimal entry point. Sets console title and starts the application by creating `LauncherApp`.
|
||||||
- HatariZipLauncher/LauncherApp.cs: Application lifecycle host — loads configuration, initializes components and runs the main directory navigation loop (contains `AppHost` internal class).
|
- MarcerGameDvdLauncher/LauncherApp.cs: Application lifecycle host — loads configuration, initializes components and runs the main directory navigation loop (contains `AppHost` internal class).
|
||||||
- HatariZipLauncher/AppConfiguration.cs: POCO configuration classes (`AppConfig`, `AppHatariConfig`) used to deserialize `launcher.config.json`.
|
- MarcerGameDvdLauncher/AppConfiguration.cs: POCO configuration classes (`AppConfig`, `AppHatariConfig`) used to deserialize `launcher.config.json`.
|
||||||
- HatariZipLauncher/ProgramHelpers.cs: Small shared helpers (resolve relative paths, centralized console message helper) used across modules.
|
- MarcerGameDvdLauncher/ProgramHelpers.cs: Small shared helpers (resolve relative paths, centralized console message helper) used across modules.
|
||||||
- HatariZipLauncher/OverlayDirectoryBrowser.cs: Filesystem overlay and browsing logic — merges root and patch directories, enumerates folders and ZIPs, protects against path traversal and ensures navigation cannot leave the configured roots.
|
- MarcerGameDvdLauncher/OverlayDirectoryBrowser.cs: Filesystem overlay and browsing logic — merges root and patch directories, enumerates folders and ZIPs, protects against path traversal and ensures navigation cannot leave the configured roots.
|
||||||
- HatariZipLauncher/NavigationController.cs: Encapsulates selection, scrolling and relative-path navigation logic (cursor, page up/down, per-directory remembered selection/state).
|
- MarcerGameDvdLauncher/NavigationController.cs: Encapsulates selection, scrolling and relative-path navigation logic (cursor, page up/down, per-directory remembered selection/state).
|
||||||
- HatariZipLauncher/MenuRenderer.cs: Console rendering logic — efficient per-line redraw, double-buffering and color selection according to overlay rules.
|
- MarcerGameDvdLauncher/MenuRenderer.cs: Console rendering logic — efficient per-line redraw, double-buffering and color selection according to overlay rules.
|
||||||
- HatariZipLauncher/HatariLauncher.cs: Responsible for validating the Hatari executable and starting Hatari with the configured argument template (replaces `{cfg}` and `{zip}`).
|
- MarcerGameDvdLauncher/HatariLauncher.cs: Responsible for validating the Hatari executable and starting Hatari with the configured argument template (replaces `{cfg}` and `{zip}`).
|
||||||
- HatariZipLauncher/UIErrorService.cs: Centralized UI error presentation using the console message helper.
|
- MarcerGameDvdLauncher/UIErrorService.cs: Centralized UI error presentation using the console message helper.
|
||||||
|
|
||||||
Note: This overview is intentionally concise. For behavioral changes (navigation, color scheme, launch command or config schema), update this file (agents.md) and README.md as required by project policy.
|
Note: This overview is intentionally concise. For behavioral changes (navigation, color scheme, launch command or config schema), update this file (agents.md) and README.md as required by project policy.
|
||||||
**Note for Automated Tests/CI:**
|
**Note for Automated Tests/CI:**
|
||||||
@@ -35,7 +35,7 @@ Additional policy:
|
|||||||
- README.md must be written in English. Any functional change that affects usage, configuration, or behavior MUST update README.md in English immediately after the change. If there are consequential changes to developer-facing policies, build steps, or requirements, `agents.md` must be updated as well.
|
- README.md must be written in English. Any functional change that affects usage, configuration, or behavior MUST update README.md in English immediately after the change. If there are consequential changes to developer-facing policies, build steps, or requirements, `agents.md` must be updated as well.
|
||||||
|
|
||||||
Developer note: Visual Studio Solution
|
Developer note: Visual Studio Solution
|
||||||
- A Visual Studio solution file exists at the repository root: `marcer-gamedvd-launcher.sln`. Developers may open this solution in Visual Studio to work on the project, debug and build from the IDE. The solution references `HatariZipLauncher\HatariZipLauncher.csproj` and includes Debug and Release configurations. Use `build.cmd` (Windows) or `build.sh` (Linux) and `start.cmd` for consistent command-line builds/releases as described elsewhere in this document.
|
- A Visual Studio solution file exists at the repository root: `marcer-gamedvd-launcher.sln`. Developers may open this solution in Visual Studio to work on the project, debug and build from the IDE. The solution references `MarcerGameDvdLauncher\MarcerGameDvdLauncher.csproj` and includes Debug and Release configurations. Use `build.cmd` (Windows) or `build.sh` (Linux) and `start.cmd` for consistent command-line builds/releases as described elsewhere in this document.
|
||||||
|
|
||||||
With this, it is ensured that binary/release files never end up in git, and the release process is always traceable and performed exclusively manually in the web interface.
|
With this, it is ensured that binary/release files never end up in git, and the release process is always traceable and performed exclusively manually in the web interface.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
REM === Build script for HatariZipLauncher (requires .NET SDK 6 or newer) ===
|
REM === Build script for MarcerGameDvdLauncher (requires .NET SDK 6 or newer) ===
|
||||||
echo Building HatariZipLauncher...
|
echo Building MarcerGameDvdLauncher...
|
||||||
where dotnet >nul 2>nul
|
where dotnet >nul 2>nul
|
||||||
if errorlevel 1 (
|
if errorlevel 1 (
|
||||||
echo [ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download
|
echo [ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download
|
||||||
@@ -10,7 +10,7 @@ if errorlevel 1 (
|
|||||||
|
|
||||||
REM Im aktuellen Ordner (wo build.cmd liegt) bauen
|
REM Im aktuellen Ordner (wo build.cmd liegt) bauen
|
||||||
cd /d %~dp0
|
cd /d %~dp0
|
||||||
cd HatariZipLauncher
|
cd MarcerGameDvdLauncher
|
||||||
|
|
||||||
dotnet build -c Release
|
dotnet build -c Release
|
||||||
if errorlevel 1 (
|
if errorlevel 1 (
|
||||||
@@ -19,7 +19,7 @@ if errorlevel 1 (
|
|||||||
)
|
)
|
||||||
|
|
||||||
REM Finden der fertigen .exe (Release-Verzeichnis)
|
REM Finden der fertigen .exe (Release-Verzeichnis)
|
||||||
for /f "delims=" %%I in ('dir /b /s /a-d bin\Release\*HatariZipLauncher*.exe') do set EXEPATH=%%I
|
for /f "delims=" %%I in ('dir /b /s /a-d bin\Release\*MarcerGameDvdLauncher*.exe') do set EXEPATH=%%I
|
||||||
if exist "%EXEPATH%" (
|
if exist "%EXEPATH%" (
|
||||||
echo [OK] Build complete. EXE: "%EXEPATH%"
|
echo [OK] Build complete. EXE: "%EXEPATH%"
|
||||||
) else (
|
) else (
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# === Build script for HatariZipLauncher (requires .NET SDK 6 or newer) ===
|
# === Build script for MarcerGameDvdLauncher (requires .NET SDK 6 or newer) ===
|
||||||
echo "Building HatariZipLauncher..."
|
echo "Building MarcerGameDvdLauncher..."
|
||||||
|
|
||||||
if ! command -v dotnet &> /dev/null; then
|
if ! command -v dotnet &> /dev/null; then
|
||||||
echo "[ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download"
|
echo "[ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download"
|
||||||
@@ -11,8 +11,8 @@ fi
|
|||||||
# Build in current directory (where build.sh is located)
|
# Build in current directory (where build.sh is located)
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
# Change to HatariZipLauncher subdirectory
|
# Change to MarcerGameDvdLauncher subdirectory
|
||||||
cd "HatariZipLauncher"
|
cd "MarcerGameDvdLauncher"
|
||||||
|
|
||||||
dotnet build -c Release
|
dotnet build -c Release
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
@@ -21,7 +21,7 @@ if [ $? -ne 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for the built .exe file
|
# Check for the built .exe file
|
||||||
EXEPATH=$(find "bin/Release" -name "HatariZipLauncher*.exe" -print -quit 2>/dev/null)
|
EXEPATH=$(find "bin/Release" -name "MarcerGameDvdLauncher*.exe" -print -quit 2>/dev/null)
|
||||||
if [ -n "$EXEPATH" ] && [ -f "$EXEPATH" ]; then
|
if [ -n "$EXEPATH" ] && [ -f "$EXEPATH" ]; then
|
||||||
echo "[OK] Build complete. EXE: \"$EXEPATH\""
|
echo "[OK] Build complete. EXE: \"$EXEPATH\""
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.6.33424.171
|
VisualStudioVersion = 17.6.33424.171
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HatariZipLauncher", "HatariZipLauncher\HatariZipLauncher.csproj", "{B1D2C3E4-F567-48AB-C9D0-1234567890AB}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarcerGameDvdLauncher", "MarcerGameDvdLauncher\MarcerGameDvdLauncher.csproj", "{B1D2C3E4-F567-48AB-C9D0-1234567890AB}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
REM Starts HatariZipLauncher.exe from the correct folder
|
REM Starts MarcerGameDvdLauncher.exe from the correct folder
|
||||||
setlocal
|
setlocal
|
||||||
set EXE_PATH=%~dp0HatariZipLauncher\bin\Release\net10.0\HatariZipLauncher.exe
|
set EXE_PATH=%~dp0MarcerGameDvdLauncher\bin\Release\net10.0\MarcerGameDvdLauncher.exe
|
||||||
|
|
||||||
if not exist "%EXE_PATH%" (
|
if not exist "%EXE_PATH%" (
|
||||||
echo [ERROR] Application not built. Please run build.cmd first.
|
echo [ERROR] Application not built. Please run build.cmd first.
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
pushd "HatariZipLauncher\bin\Release\net10.0"
|
pushd "MarcerGameDvdLauncher\bin\Release\net10.0"
|
||||||
"HatariZipLauncher.exe"
|
"MarcerGameDvdLauncher.exe"
|
||||||
popd
|
popd
|
||||||
|
|||||||
Reference in New Issue
Block a user