Ejemplo n.º 1
0
        internal AScriptHandler(OMOD omod, string script, OMODScriptSettings settings, string?extractionFolder)
        {
            ScriptSettings = settings;

            OMOD   = omod;
            Script = script;

            var guid = Guid.NewGuid();

            ExtractionFolder = extractionFolder ?? Path.Combine(Path.GetTempPath(), "OMODFramework", guid.ToString("D"));

            DataFolder    = Path.Combine(ExtractionFolder, "data");
            PluginsFolder = Path.Combine(ExtractionFolder, "plugins");

            if (!settings.DryRun)
            {
                Directory.CreateDirectory(DataFolder);
                Directory.CreateDirectory(PluginsFolder);

                omod.ExtractFilesParallel(DataFolder, 4);
                if (omod.HasEntryFile(OMODEntryFileType.Plugins))
                {
                    omod.ExtractFiles(false, PluginsFolder);
                }
            }

            ScriptReturnData = new ScriptReturnData(DataFolder, PluginsFolder);
            ScriptFunctions  = new ScriptFunctions(ScriptSettings, omod, ScriptReturnData);
        }
Ejemplo n.º 2
0
        public async void TestOMODExtractionParallel()
        {
            var file = Path.Combine("files", "test.omod");

            using var omod = new OMOD(file);

            const string outputDir = @"output-extraction-parallel";

            if (Directory.Exists(outputDir))
            {
                Directory.Delete(outputDir, true);
            }
            Directory.CreateDirectory(outputDir);

            var files = omod.GetFilesFromCRC(true);

            Assert.NotEmpty(files);

            omod.ExtractFilesParallel(outputDir, 4, 2, true);

            foreach (var outputPath in files.Select(compressedFile => Path.Combine(outputDir, compressedFile.Name)))
            {
                Assert.True(File.Exists(outputPath), $"File does not exist: {outputPath}");
            }
        }