feat(linux): add graphical platform services

This commit is contained in:
Erik 2026-07-27 11:54:59 +02:00
parent 1628d9f587
commit 66f114b258
28 changed files with 1328 additions and 155 deletions

View file

@ -0,0 +1,50 @@
using AcDream.Runtime.Platform;
namespace AcDream.App.Platform;
internal static class GraphicalLegacyConfigurationMigrator
{
private static readonly string[] FileNames =
[
"settings.json",
"keybinds.json",
];
internal static IReadOnlyList<string> Migrate(
ApplicationPathSet paths)
{
ArgumentNullException.ThrowIfNull(paths);
if (paths.LegacyConfigDirectory is not { } legacyDirectory
|| PathsEqual(legacyDirectory, paths.ConfigDirectory))
{
return [];
}
List<string>? migrated = null;
foreach (string fileName in FileNames)
{
string source = Path.Combine(legacyDirectory, fileName);
string destination = Path.Combine(
paths.ConfigDirectory,
fileName);
if (!File.Exists(source) || File.Exists(destination))
continue;
Directory.CreateDirectory(paths.ConfigDirectory);
File.Copy(source, destination, overwrite: false);
(migrated ??= []).Add(destination);
}
return migrated ?? [];
}
private static bool PathsEqual(string left, string right) =>
string.Equals(
Path.TrimEndingDirectorySeparator(
Path.GetFullPath(left)),
Path.TrimEndingDirectorySeparator(
Path.GetFullPath(right)),
OperatingSystem.IsWindows()
? StringComparison.OrdinalIgnoreCase
: StringComparison.Ordinal);
}