From 273deae0b41c195168bf333b8d932f85ea882702 Mon Sep 17 00:00:00 2001 From: Rafael Mohlin Date: Sat, 10 Dec 2022 21:07:32 +0100 Subject: [PATCH 1/2] Use InvocationContext for CommandLine handler --- CASCConsole/Program.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CASCConsole/Program.cs b/CASCConsole/Program.cs index a4b8b38..39390d2 100644 --- a/CASCConsole/Program.cs +++ b/CASCConsole/Program.cs @@ -29,12 +29,17 @@ static void Main(string[] args) var storagePathOption = new Option(new[] { "-s", "--storage" }, () => "", "Local game storage folder"); var overrideArchiveOption = new Option(new[] { "-a", "--archive" }, () => false, "Override archive"); - 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 }; - 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)); + }); rootCommand.Invoke(args); } From 2e65eee5c046b5cbd64a46da8db9205415d2bb97 Mon Sep 17 00:00:00 2001 From: Rafael Mohlin Date: Sat, 10 Dec 2022 21:08:46 +0100 Subject: [PATCH 2/2] Add option to dump VersionName to file --- CASCConsole/Program.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/CASCConsole/Program.cs b/CASCConsole/Program.cs index 39390d2..3ba0dcc 100644 --- a/CASCConsole/Program.cs +++ b/CASCConsole/Program.cs @@ -28,8 +28,9 @@ 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 allOptions = new Option[] { modeOption, modeParamOption, destOption, localeOption, productOption, onlineOption, storagePathOption, overrideArchiveOption }; + var allOptions = new Option[] { modeOption, modeParamOption, destOption, localeOption, productOption, onlineOption, storagePathOption, overrideArchiveOption, dumpVersionToFileOption }; var rootCommand = new RootCommand("CASCConsole"); foreach (var option in allOptions) @@ -38,12 +39,12 @@ static void Main(string[] args) rootCommand.SetHandler((context) => { 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)); + 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; @@ -69,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:");