private static void Migrate() { Console.WriteLine($"Migrating old Librarian data from \"{Settings.MigrateOldLibrarianData}\" to \"{Settings.LibraryRoot}\""); LocalInventory localInventory = new LocalInventory(Settings.LibraryRoot, new List <Game.AppType>()); foreach (Game.BuildType buildType in Enum.GetValues(typeof(Game.BuildType)).Cast <Game.BuildType>()) { string buildRoot = Path.Combine(Settings.MigrateOldLibrarianData, Game.BuildTypeToString(buildType)); if (!Directory.Exists(buildRoot)) { continue; } foreach (string versions in Directory.EnumerateDirectories(buildRoot)) { string gameFolder = Directory.EnumerateDirectories(versions).FirstOrDefault(); if (gameFolder is null) { continue; } string fileName = Path.GetFileName(versions); string meta = File.ReadAllText(Path.Combine(gameFolder, fileName + ".json")); Game game = new Game(meta); Dictionary <Game.AppType, IResource> files = new Dictionary <Game.AppType, IResource>(); if (File.Exists(Path.Combine(gameFolder, "client.jar"))) { files[Game.AppType.Client] = LocalResource.Load(Path.Combine(gameFolder, "client.jar")); } if (File.Exists(Path.Combine(gameFolder, "server.jar"))) { files[Game.AppType.Server] = LocalResource.Load(Path.Combine(gameFolder, "server.jar")); } localInventory.AddGame(game, files); foreach (IResource resource in files.Values) { resource.Data.Dispose(); } } } Console.WriteLine("Migration complete"); }