Example #1
0
        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");
        }