diff --git a/CASCConsole/Program.cs b/CASCConsole/Program.cs index a4b8b38..3ba0dcc 100644 --- a/CASCConsole/Program.cs +++ b/CASCConsole/Program.cs @@ -28,17 +28,23 @@ static void Main(string[] args) var onlineOption = new Option(new[] { "-o", "--online" }, () => false, "Online extraction mode"); var storagePathOption = new Option(new[] { "-s", "--storage" }, () => "", "Local game storage folder"); var overrideArchiveOption = new Option(new[] { "-a", "--archive" }, () => false, "Override archive"); + var dumpVersionToFileOption = new Option(new[] { "-v", "--dump-version-to-file" }, "Dump game version to file (example: version.txt)"); - var rootCommand = new RootCommand("CASCConsole") { modeOption, modeParamOption, destOption, localeOption, productOption, onlineOption, storagePathOption, overrideArchiveOption }; + var allOptions = new Option[] { modeOption, modeParamOption, destOption, localeOption, productOption, onlineOption, storagePathOption, overrideArchiveOption, dumpVersionToFileOption }; - rootCommand.SetHandler((ExtractMode mode, string modeParam, string destFolder, LocaleFlags locale, string product, bool online, string storagePath, bool overrideArchive) => + var rootCommand = new RootCommand("CASCConsole"); + foreach (var option in allOptions) + rootCommand.Add(option); + + rootCommand.SetHandler((context) => { - Extract(mode, modeParam, destFolder, locale, product, online, storagePath, overrideArchive); - }, modeOption, modeParamOption, destOption, localeOption, productOption, onlineOption, storagePathOption, overrideArchiveOption); + T get(Option option) => context.ParseResult.GetValueForOption(option); + Extract(get(modeOption), get(modeParamOption), get(destOption), get(localeOption), get(productOption), get(onlineOption), get(storagePathOption), get(overrideArchiveOption), get(dumpVersionToFileOption)); + }); rootCommand.Invoke(args); } - private static void Extract(ExtractMode mode, string modeParam, string destFolder, LocaleFlags locale, string product, bool online, string storagePath, bool overrideArchive) + private static void Extract(ExtractMode mode, string modeParam, string destFolder, LocaleFlags locale, string product, bool online, string storagePath, bool overrideArchive, string dumpVersionToFile) { DateTime startTime = DateTime.Now; @@ -64,6 +70,12 @@ private static void Extract(ExtractMode mode, string modeParam, string destFolde CASCFolder root = cascHandler.Root.SetFlags(locale, overrideArchive); cascHandler.Root.MergeInstall(cascHandler.Install); + if (!string.IsNullOrEmpty(dumpVersionToFile)) + { + Console.WriteLine("Dumping version..."); + File.WriteAllText(Path.Combine(destFolder, dumpVersionToFile), config.VersionName); + } + Console.WriteLine("Loaded."); Console.WriteLine("Extract params:");