mirror of https://github.com/hykilpikonna/AquaDX
[+] Add LatestVersion to interface
AquaMai Build / build (push) Has been cancelled
Details
AquaMai Build / build (push) Has been cancelled
Details
parent
734dbfb761
commit
4834363fb5
|
@ -4,4 +4,5 @@ public interface IConfigMigrationManager
|
||||||
{
|
{
|
||||||
public IConfigView Migrate(IConfigView config);
|
public IConfigView Migrate(IConfigView config);
|
||||||
public string GetVersion(IConfigView config);
|
public string GetVersion(IConfigView config);
|
||||||
|
public string LatestVersion { get; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,9 +31,9 @@ public class ConfigParser : IConfigParser
|
||||||
public void Parse(IConfig config, IConfigView configView)
|
public void Parse(IConfig config, IConfigView configView)
|
||||||
{
|
{
|
||||||
var configVersion = ConfigMigrationManager.Instance.GetVersion(configView);
|
var configVersion = ConfigMigrationManager.Instance.GetVersion(configView);
|
||||||
if (configVersion != ConfigMigrationManager.Instance.latestVersion)
|
if (configVersion != ConfigMigrationManager.Instance.LatestVersion)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"Config version mismatch: expected {ConfigMigrationManager.Instance.latestVersion}, got {configVersion}");
|
throw new InvalidOperationException($"Config version mismatch: expected {ConfigMigrationManager.Instance.LatestVersion}, got {configVersion}");
|
||||||
}
|
}
|
||||||
Hydrate((Config)config, ((ConfigView)configView).root, "");
|
Hydrate((Config)config, ((ConfigView)configView).root, "");
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,11 @@ public class ConfigMigrationManager : IConfigMigrationManager
|
||||||
new ConfigMigration_V1_0_V2_0()
|
new ConfigMigration_V1_0_V2_0()
|
||||||
}.ToDictionary(m => m.FromVersion);
|
}.ToDictionary(m => m.FromVersion);
|
||||||
|
|
||||||
public readonly string latestVersion;
|
public string LatestVersion { get; }
|
||||||
|
|
||||||
private ConfigMigrationManager()
|
private ConfigMigrationManager()
|
||||||
{
|
{
|
||||||
latestVersion = migrationMap.Values
|
LatestVersion = migrationMap.Values
|
||||||
.Select(m => m.ToVersion)
|
.Select(m => m.ToVersion)
|
||||||
.OrderByDescending(version =>
|
.OrderByDescending(version =>
|
||||||
{
|
{
|
||||||
|
@ -39,9 +39,9 @@ public class ConfigMigrationManager : IConfigMigrationManager
|
||||||
config = migration.Migrate(config);
|
config = migration.Migrate(config);
|
||||||
currentVersion = migration.ToVersion;
|
currentVersion = migration.ToVersion;
|
||||||
}
|
}
|
||||||
if (currentVersion != latestVersion)
|
if (currentVersion != LatestVersion)
|
||||||
{
|
{
|
||||||
throw new ArgumentException($"Could not migrate the config from v{currentVersion} to v{latestVersion}");
|
throw new ArgumentException($"Could not migrate the config from v{currentVersion} to v{LatestVersion}");
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public static class ConfigLoader
|
||||||
var configText = File.ReadAllText(ConfigFile);
|
var configText = File.ReadAllText(ConfigFile);
|
||||||
var configView = new ConfigView(configText);
|
var configView = new ConfigView(configText);
|
||||||
var configVersion = ConfigMigrationManager.Instance.GetVersion(configView);
|
var configVersion = ConfigMigrationManager.Instance.GetVersion(configView);
|
||||||
if (configVersion != ConfigMigrationManager.Instance.latestVersion)
|
if (configVersion != ConfigMigrationManager.Instance.LatestVersion)
|
||||||
{
|
{
|
||||||
File.WriteAllText(OldConfigFile(configVersion), configText);
|
File.WriteAllText(OldConfigFile(configVersion), configText);
|
||||||
configView = (ConfigView)ConfigMigrationManager.Instance.Migrate(configView);
|
configView = (ConfigView)ConfigMigrationManager.Instance.Migrate(configView);
|
||||||
|
|
Loading…
Reference in New Issue