From b9a3001c1121ef27331e8f64fb762842ba1c9da2 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:06:20 +0200 Subject: [PATCH] Add `DISCORDCHATEXPORTER_SETTINGS_PATH` env var override for settings file path (#1500) Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .../Services/SettingsService.cs | 9 ++----- DiscordChatExporter.Gui/StartOptions.cs | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 DiscordChatExporter.Gui/StartOptions.cs diff --git a/DiscordChatExporter.Gui/Services/SettingsService.cs b/DiscordChatExporter.Gui/Services/SettingsService.cs index ebd4ca78..50581178 100644 --- a/DiscordChatExporter.Gui/Services/SettingsService.cs +++ b/DiscordChatExporter.Gui/Services/SettingsService.cs @@ -1,6 +1,4 @@ -using System; -using System.IO; -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Cogwheel; using CommunityToolkit.Mvvm.ComponentModel; using DiscordChatExporter.Core.Discord; @@ -13,10 +11,7 @@ namespace DiscordChatExporter.Gui.Services; [ObservableObject] public partial class SettingsService() - : SettingsBase( - Path.Combine(AppContext.BaseDirectory, "Settings.dat"), - SerializerContext.Default - ) + : SettingsBase(StartOptions.Current.SettingsPath, SerializerContext.Default) { [ObservableProperty] public partial bool IsUkraineSupportMessageEnabled { get; set; } = true; diff --git a/DiscordChatExporter.Gui/StartOptions.cs b/DiscordChatExporter.Gui/StartOptions.cs new file mode 100644 index 00000000..f29a04ea --- /dev/null +++ b/DiscordChatExporter.Gui/StartOptions.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; + +namespace DiscordChatExporter.Gui; + +public partial class StartOptions +{ + public required string SettingsPath { get; init; } +} + +public partial class StartOptions +{ + public static StartOptions Current { get; } = + new() + { + SettingsPath = + Environment.GetEnvironmentVariable("DISCORDCHATEXPORTER_SETTINGS_PATH") is { } path + && !string.IsNullOrWhiteSpace(path) + ? Path.EndsInDirectorySeparator(path) || Directory.Exists(path) + ? Path.Combine(path, "Settings.dat") + : path + : Path.Combine(AppContext.BaseDirectory, "Settings.dat"), + }; +}