From d93c42e89c63a5a8921d1be175419f9492ee9b5d Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 21 Oct 2010 03:24:32 +1300 Subject: [PATCH] added another function to the Utility app. --- OpenRA.Utility/Program.cs | 59 +++++++++++++++++++++++++++++++++----- soviet-logo.png | Bin 0 -> 8565 bytes 2 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 soviet-logo.png diff --git a/OpenRA.Utility/Program.cs b/OpenRA.Utility/Program.cs index 2e166fda60..0e6651b117 100644 --- a/OpenRA.Utility/Program.cs +++ b/OpenRA.Utility/Program.cs @@ -38,12 +38,16 @@ namespace OpenRA.Utility { argCallbacks = new Dictionary(); argCallbacks.Add("--list-mods", ListMods); + argCallbacks.Add("-l", ListMods); argCallbacks.Add("--mod-info", ListModInfo); + argCallbacks.Add("-i", ListModInfo); argCallbacks.Add("--install-ra-music", InstallRAMusic); argCallbacks.Add("--install-cnc-music", InstallCncMusic); argCallbacks.Add("--download-packages", DownloadPackages); argCallbacks.Add("--install-ra-packages", InstallRAPackages); argCallbacks.Add("--install-cnc-packages", InstallCncPackages); + argCallbacks.Add("--settings-value", Settings); + if (args.Length == 0) { PrintUsage(); return; } var arg = SplitArgs(args[0]); @@ -58,13 +62,14 @@ namespace OpenRA.Utility { Console.WriteLine("Usage: OpenRA.Utility.exe [OPTION]"); Console.WriteLine(); - Console.WriteLine(" --list-mods List currently installed mods"); - Console.WriteLine(" --mod-info=MODS List metadata for MODS (comma separated list of mods)"); - Console.WriteLine(" --install-ra-music=PATH Install scores.mix from PATH to Red Alert CD"); - Console.WriteLine(" --install-cnc-music=PATH Install scores.mix from PATH to Command & Conquer CD"); - Console.WriteLine(" --download-packages=MOD{,DEST} Download packages for MOD to DEST (def: system temp folder) and install them"); - Console.WriteLine(" --install-ra-packages=PATH Install required packages for RA from PATH to CD"); - Console.WriteLine(" --install-cnc-packages=PATH Install required packages for C&C from PATH to CD"); + Console.WriteLine(" -l,--list-mods List currently installed mods"); + Console.WriteLine(" -i=MODS,--mod-info=MODS List metadata for MODS (comma separated list of mods)"); + Console.WriteLine(" --install-ra-music=PATH Install scores.mix from PATH to Red Alert CD"); + Console.WriteLine(" --install-cnc-music=PATH Install scores.mix from PATH to Command & Conquer CD"); + Console.WriteLine(" --download-packages=MOD{,DEST} Download packages for MOD to DEST (def: system temp folder) and install them"); + Console.WriteLine(" --install-ra-packages=PATH Install required packages for RA from PATH to CD"); + Console.WriteLine(" --install-cnc-packages=PATH Install required packages for C&C from PATH to CD"); + Console.WriteLine(" --settings-value=SUPPORTDIR,KEY{,VALUE} Get or set KEY in SUPPORTDIR/settings.yaml"); } static void ListMods(string _) @@ -236,5 +241,45 @@ namespace OpenRA.Utility { Console.WriteLine ("Error: NotI"); } + + static void Settings(string argValue) + { + string[] args = argValue.Split(','); + + if (args.Length < 2) { return; } + + string settingsFile = args[0] + Path.DirectorySeparatorChar + "settings.yaml"; + List settingsYaml = MiniYaml.FromFile(settingsFile); + Queue settingKey = new Queue(args[1].Split('.')); + + string s = settingKey.Dequeue(); + MiniYaml n = settingsYaml.Where(x => x.Key == s).Select(x => x.Value).FirstOrDefault(); + + if (n == null) + { + Console.WriteLine("Error: Could not find {0} in {1}", args[1], settingsFile); + return; + } + + while (settingKey.Count > 0) + { + s = settingKey.Dequeue(); + if (!n.NodesDict.TryGetValue(s, out n)) + { + Console.WriteLine("Error: Could not find {0} in {1}", args[1], settingsFile); + return; + } + } + + if (args.Length == 2) + { + Console.WriteLine(n.Value); + } + else if (args.Length == 3) + { + n.Value = args[2]; + settingsYaml.WriteToFile(settingsFile); + } + } } } diff --git a/soviet-logo.png b/soviet-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b858fd6816756683c2d7e9880eb16a67366fa789 GIT binary patch literal 8565 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 literal 0 HcmV?d00001