Use the existing settings mechanism for --settings-value. Allows the defaults to be queried.

This commit is contained in:
Paul Chote
2011-01-27 19:34:52 +13:00
parent 562d07f11a
commit 746c3d068c
3 changed files with 10 additions and 35 deletions

View File

@@ -157,7 +157,7 @@ PHONY += fixheader
utility_SRCS = $(shell find OpenRA.Utility/ -iname '*.cs')
utility_TARGET = OpenRA.Utility.exe
utility_KIND = exe
utility_DEPS = $(fileformats_TARGET)
utility_DEPS = $(fileformats_TARGET) $(game_TARGET)
utility_LIBS = $(COMMON_LIBS) $(utility_DEPS) thirdparty/ICSharpCode.SharpZipLib.dll System.Windows.Forms.dll
PROGRAMS += utility
utility: $(utility_TARGET)

View File

@@ -93,7 +93,7 @@ namespace OpenRA.GameRules
public ServerSettings Server = new ServerSettings();
public DebugSettings Debug = new DebugSettings();
Dictionary<string, object> Sections;
public Dictionary<string, object> Sections;
public Settings(string file, Arguments args)
{
SettingsFile = file;
@@ -107,6 +107,7 @@ namespace OpenRA.GameRules
{"Debug", Debug}
};
// Override fieldloader to ignore invalid entries
var err1 = FieldLoader.UnknownFieldAction;
var err2 = FieldLoader.InvalidValueAction;
@@ -118,7 +119,7 @@ namespace OpenRA.GameRules
if (File.Exists(SettingsFile))
{
Console.WriteLine("Loading settings file {0}",SettingsFile);
//Console.WriteLine("Loading settings file {0}",SettingsFile);
var yaml = MiniYaml.DictFromFile(SettingsFile);
foreach (var kv in Sections)

View File

@@ -18,6 +18,7 @@ using System.Windows.Forms;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
using OpenRA.FileFormats;
using OpenRA;
namespace OpenRA.Utility
{
@@ -138,39 +139,12 @@ namespace OpenRA.Utility
Console.WriteLine("Error: Invalid syntax");
return;
}
var section = args[2].Split('.')[0];
var field = args[2].Split('.')[1];
string expandedPath = args[1].Replace("~", Environment.GetFolderPath(Environment.SpecialFolder.Personal));
string settingsFile = expandedPath + Path.DirectorySeparatorChar + "settings.yaml";
if (!File.Exists(settingsFile))
{
Console.WriteLine("Error: Could not locate settings file at {0}", settingsFile);
return;
}
List<MiniYamlNode> settingsYaml = MiniYaml.FromFile(settingsFile);
Queue<String> settingKey = new Queue<string>(args[2].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[2], 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[2], settingsFile);
return;
}
}
Console.WriteLine(n.Value);
var settings = new OpenRA.GameRules.Settings(expandedPath + Path.DirectorySeparatorChar + "settings.yaml", new Arguments(new string[]{}));
var result = settings.Sections[section].GetType().GetField(field).GetValue(settings.Sections[section]);
Console.WriteLine(result);
}
public static void AuthenticateAndExtractZip(string[] args)