migrate settings
This commit is contained in:
@@ -1,10 +1,22 @@
|
||||
using Telerik.WinControls;
|
||||
using Newtonsoft.Json;
|
||||
using Pilz.Configuration;
|
||||
using Telerik.WinControls;
|
||||
|
||||
namespace ModpackUpdater;
|
||||
|
||||
internal static class Program
|
||||
public static class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
private static readonly SettingsManager settingsManager;
|
||||
|
||||
public static ISettings Settings => settingsManager.Instance;
|
||||
|
||||
static Program()
|
||||
{
|
||||
settingsManager = new(GetSettingsPath(2), true);
|
||||
MigrateLegacySettings(GetSettingsPath(null));
|
||||
}
|
||||
|
||||
internal static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
@@ -15,4 +27,35 @@ internal static class Program
|
||||
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
|
||||
private static string GetSettingsPath(int? settingsVersion = 2)
|
||||
{
|
||||
const string AppDataDirectoryName = "MinecraftModpackUpdater";
|
||||
var fileNamePostfix = settingsVersion == null ? string.Empty : $"V{settingsVersion}";
|
||||
var SettingsFileName = $"Settings{fileNamePostfix}.json";
|
||||
|
||||
var settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), AppDataDirectoryName);
|
||||
Directory.CreateDirectory(settingsPath);
|
||||
settingsPath = Path.Combine(settingsPath, SettingsFileName);
|
||||
|
||||
return settingsPath;
|
||||
}
|
||||
|
||||
private static void MigrateLegacySettings(string settingsPath)
|
||||
{
|
||||
// Try load legacy config file
|
||||
if (!File.Exists(settingsPath) || JsonConvert.DeserializeObject<AppConfig>(File.ReadAllText(settingsPath)) is not AppConfig legacyConfig)
|
||||
return;
|
||||
|
||||
// Migrate
|
||||
var newConfig = Settings.Get<AppConfig>();
|
||||
newConfig.LastMinecraftProfilePath = legacyConfig.LastMinecraftProfilePath;
|
||||
newConfig.LastConfigFilePath = legacyConfig.LastConfigFilePath;
|
||||
|
||||
// Ensure save settings
|
||||
settingsManager.Save();
|
||||
|
||||
// Delete legacy config file
|
||||
File.Delete(settingsPath);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user