Example #1
0
 public static void RunFileOutput(FileOutputOptions options)
 {
     Logger.InitialiseLogger(options);
     using (IHashHandler handler = new FileOutputHandler(options))
     {
         handler.RunHandler();
     }
 }
Example #2
0
        protected void DescriptionTypeTests(int descriptionType)
        {
            FileOutputOptions options = new FileOutputOptions()
            {
                DescriptionType = (DescriptionType)descriptionType,
            };

            FileOutput fileOutput = new FileOutput(descriptionType, options);

            fileOutput.Create(TestData, FileOutputType);

            CompareFile(GetFilePath(descriptionType, false), $"{FileOutputTypeFileName}output{descriptionType}.{FileOutputTypeFileName}");
        }
Example #3
0
        public virtual void WriterMinifiedTest()
        {
            FileOutputOptions options = new FileOutputOptions()
            {
                IsMinifiedFiles = true,
            };

            FileOutput fileOutput = new FileOutput(MinifiedBuildNumber, options);

            fileOutput.Create(TestData, FileOutputType);

            Assert.IsTrue(File.Exists(GetFilePath(MinifiedBuildNumber, false)));
            Assert.IsTrue(File.Exists(GetFilePath(MinifiedBuildNumber, true)));
        }
Example #4
0
        public virtual void WriterGameStringLocalizedTests()
        {
            FileOutputOptions options = new FileOutputOptions()
            {
                IsLocalizedText = true,
                DescriptionType = DescriptionType.RawDescription,
            };

            FileOutput fileOutput = new FileOutput(GamestringsBuildNumber, options);

            fileOutput.Create(TestData, FileOutputType);

            CompareFile(Path.Combine(BaseOutputDirectory, $"{BaseGamestringsDirectory}-{GamestringsBuildNumber}", $"{BaseGamestringsDirectory}_{GamestringsBuildNumber}_{LocalizationFileName}.txt"), $"{BaseGamestringsDirectory}_11111.txt");
            CompareFile(Path.Combine(DefaultOutputDirectory, $"{DefaultDataNameSuffix}_{GamestringsBuildNumber}_localized.{FileOutputTypeFileName}"), $"{FileOutputTypeFileName}gamestringlocalized.{FileOutputTypeFileName}");
        }
        public virtual void WriterFileSplitMinifiedHasBuildNumberTest()
        {
            FileOutputOptions options = new FileOutputOptions()
            {
                IsFileSplit     = true,
                IsMinifiedFiles = true,
            };

            FileOutput fileOutput = new FileOutput(SplitMinifiedBuildNumber, options);

            fileOutput.Create(TestData, FileOutputType);

            string directory = GetSplitFilePath(SplitMinifiedBuildNumber, true);

            Assert.IsTrue(Directory.Exists(directory));

            Assert.IsTrue(File.Exists(Path.Combine(directory, $"alarak.min.{FileOutputTypeFileName}")));
            Assert.IsTrue(File.Exists(Path.Combine(directory, $"alexstrasza.min.{FileOutputTypeFileName}")));
        }
        public virtual void WriterFileSplitHasBuildNumberTest()
        {
            FileOutputOptions options = new FileOutputOptions()
            {
                IsFileSplit     = true,
                DescriptionType = DescriptionType.RawDescription,
            };

            FileOutput fileOutput = new FileOutput(BuildNumber, options);

            fileOutput.Create(TestData, FileOutputType);

            string directory = GetSplitFilePath(BuildNumber, false);

            Assert.IsTrue(Directory.Exists(directory));

            CompareFile(Path.Combine(directory, $"alarak.{FileOutputTypeFileName}"), $"alarak.{FileOutputTypeFileName}");
            CompareFile(Path.Combine(directory, $"alexstrasza.{FileOutputTypeFileName}"), $"alexstrasza.{FileOutputTypeFileName}");
        }
Example #7
0
        public void Run()
        {
            Console.WriteLine($"{AppContext.BaseDirectory}");
            Console.WriteLine($"Heroes Data Parser ({Version})");
            Console.WriteLine("  --https://github.com/HeroesToolChest/HeroesDataParser");
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.WriteLine();

            int totalLocaleSuccess = 0;

            try
            {
                PreInitialize();
                InitializeGameData();
                InitializeOverrideData();

                SetUpDataProcessors();
                SetupValidationIgnoreFile();

                // set the options for the writers
                FileOutputOptions options = new FileOutputOptions()
                {
                    DescriptionType      = DescriptionType,
                    IsFileSplit          = IsFileSplit,
                    IsLocalizedText      = IsLocalizedText,
                    IsMinifiedFiles      = CreateMinFiles,
                    OutputDirectory      = OutputDirectory,
                    AllowDataFileWriting = !IsLocalizedText,
                };

                foreach (Localization localization in Localizations)
                {
                    options.Localization = localization;

                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.WriteLine($"[{localization.GetFriendlyName()}]");
                    Console.ResetColor();

                    LoadGameStrings(localization);

                    // parse gamestrings
                    ParseGameStrings(localization);

                    // parse data
                    DataProcessor((parser) =>
                    {
                        if (parser.Parse != null)
                        {
                            parser.ParsedItems = parser.Parse(localization);
                        }
                    });

                    // validate
                    Console.WriteLine("Validating data...");
                    DataProcessor((parser) =>
                    {
                        parser.Validate?.Invoke(localization);
                    });

                    if (!ShowValidationWarnings)
                    {
                        Console.WriteLine();
                    }

                    // write
                    WriteFileOutput(options);

                    totalLocaleSuccess++;
                }

                // write
                if (IsLocalizedText)
                {
                    options.AllowDataFileWriting = true;
                    WriteFileOutput(options);
                }

                if (ExtractFileOption != ExtractImageOptions.None)
                {
                    Console.WriteLine("Extracting files...");
                    DataProcessor((parser) =>
                    {
                        if (parser.ParsedItems != null)
                        {
                            parser.Extract?.Invoke(parser.ParsedItems !);
                        }
                    });

                    Console.WriteLine();
                }

                if (totalLocaleSuccess == Localizations.Count)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                }
                else if (totalLocaleSuccess > 0)
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                }

                Console.WriteLine($"HDP has completed [{totalLocaleSuccess} out of {Localizations.Count} successful].");
                Console.WriteLine();
            }
            catch (Exception ex) // catch everything
            {
                WriteExceptionLog("Error", ex);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex);
                Console.WriteLine();

                Console.ResetColor();
                Environment.Exit(1);
            }
        }
Example #8
0
        private void WriteFileOutput(FileOutputOptions options)
        {
            // write
            FileOutput fileOutput = new FileOutput(HotsBuild, options);

            if (options.AllowDataFileWriting)
            {
                Console.WriteLine("Creating output file(s)...");
            }
            else
            {
                Console.WriteLine("Creating gamestring data...");
            }

            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine($"Directory: {options.OutputDirectory}");
            Console.ResetColor();
            DataProcessor((parser) =>
            {
                if (options.AllowDataFileWriting)
                {
                    if (CreateJson)
                    {
                        Console.Write($"[{parser.Name}] Writing json file(s)...");

                        if (fileOutput.Create((dynamic)parser.ParsedItems, FileOutputType.Json))
                        {
                            Console.WriteLine("Done.");
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("Failed.");
                            Console.ResetColor();
                        }
                    }

                    if (CreateXml)
                    {
                        Console.Write($"[{parser.Name}] Writing xml file(s)...");

                        if (fileOutput.Create((dynamic)parser.ParsedItems, FileOutputType.Xml))
                        {
                            Console.WriteLine("Done.");
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("Failed.");
                            Console.ResetColor();
                        }
                    }
                }
                else
                {
                    // only need to parsed through one type of file to get the gamestrings
                    Console.Write($"[{parser.Name}] Writing gamestrings...");

                    if (fileOutput.Create((dynamic)parser.ParsedItems, FileOutputType.Json))
                    {
                        Console.WriteLine("Done.");
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Failed.");
                        Console.ResetColor();
                    }
                }

                Console.ResetColor();
            });

            Console.WriteLine();
        }