public void Refresh() { ConfigDictionary refreshedConfigSet = new ConfigDictionary(); BuildReleaseType[] releaseTypes = BuildSettings.releaseTypeList.releaseTypes; for (int i = 0; i < releaseTypes.Length; i++) { string key = releaseTypes[i].typeName; Configuration relConfig = new Configuration(); // Check for duplicate. if (refreshedConfigSet.ContainsKey(key)) { continue; } // Copy old setting if it exists. if (configSet != null && configSet.ContainsKey(key)) { relConfig.enabled = configSet[key].enabled; } // Get child keys. relConfig.childKeys = RefreshPlatforms(key, refreshedConfigSet, configSet); // Save configuration. refreshedConfigSet.Add(key, relConfig); } configSet = refreshedConfigSet; }
public void Construction() { var s = @" # comment key1:value1 key2 : value2 # comment key.key3: value3 # comment key4= value4 key5=value5 multilines = line1 # comment line2 # comment line3 multilines2 : line1 line2 line3 # comment multilines3 : line1 line2 line3 # comment key key = value value "; var dict = new ConfigDictionary(new StringReader(s)); Assert.IsTrue(dict.ContainsKey("key1")); Assert.AreEqual(dict["key1"].Value, "value1"); Assert.IsTrue(dict.ContainsKey("key2")); Assert.AreEqual(dict["key2"].Value, "value2"); Assert.IsTrue(dict.ContainsKey("key.key3")); Assert.AreEqual(dict["key.key3"].Value, "value3"); Assert.IsTrue(dict.ContainsKey("key4")); Assert.AreEqual(dict["key4"].Value, "value4"); Assert.IsTrue(dict.ContainsKey("key5")); Assert.AreEqual(dict["key5"].Value, "value5"); Assert.IsTrue(dict.ContainsKey("multilines")); Assert.AreEqual(dict["multilines"].Value, "line1"); CollectionAssert.AreEqual(dict["multilines"].Subsididary, new[] { "line2", "line3" }); Assert.IsTrue(dict.ContainsKey("multilines2")); Assert.AreEqual(dict["multilines2"].Value, "line1"); CollectionAssert.AreEqual(dict["multilines2"].Subsididary, new[] { "line2", "line3" }); Assert.IsTrue(dict.ContainsKey("multilines3")); Assert.AreEqual(dict["multilines3"].Value, ""); CollectionAssert.AreEqual(dict["multilines3"].Subsididary, new[] { "line1", "line2", "line3" }); Assert.IsTrue(dict.ContainsKey("key key")); Assert.AreEqual(dict["key key"].Value, "value value"); Dump(dict); }
private string[] RefreshDistributions(string keyChain, ConfigDictionary refreshedConfigSet, BuildDistribution[] distributions, ConfigDictionary prevConfigSet) { List <string> childKeys = new List <string>(); for (int i = 0; i < distributions.Length; i++) { if (!distributions[i].enabled) { continue; } string key = keyChain + "/" + distributions[i].distributionName; Configuration relConfig = new Configuration(); if (refreshedConfigSet.ContainsKey(key)) { continue; } if (prevConfigSet != null && prevConfigSet.ContainsKey(key)) { relConfig.enabled = prevConfigSet[key].enabled; } refreshedConfigSet.Add(key, relConfig); // Add key to list to send back to parent. childKeys.Add(key); } return(childKeys.ToArray()); }
/// <summary> /// 尝试获取字典的值 没有不报错 返回默认值 /// </summary> /// <param name="configkey"></param> /// <param name="defaultvalue"></param> /// <returns></returns> public string TryGet(string configkey, string defaultvalue = "") { if (ConfigDictionary.ContainsKey(configkey)) { return(ConfigDictionary[configkey]); } return(defaultvalue); }
private static void ValidateDictionary(ConfigDictionary dictionary) { if ( !dictionary.ContainsKey("git_user") || !dictionary["git_user"].ContainsKey("personal_email") || !dictionary["git_user"].ContainsKey("work_email") ) { Log.Error("Config file does not contain the necessary values."); Environment.Exit(1); } }
private string[] RefreshArchitectures(string keyChain, ConfigDictionary refreshedConfigSet, string variantKey, BuildArchitecture[] architectures, BuildDistribution[] distributions, ConfigDictionary prevConfigSet) { List <string> childKeys = new List <string>(); for (int i = 0; i < architectures.Length; i++) { // Skip if architecture is disabled. if (!architectures[i].enabled) { continue; } string key = keyChain + "/" + architectures[i].name; if (variantKey.Length > 0) { key += " (" + variantKey + ")"; } Configuration relConfig = new Configuration(); // Check for a duplicate key. if (refreshedConfigSet.ContainsKey(key)) { continue; } // Copy previous settings if they exist. if (prevConfigSet != null && prevConfigSet.ContainsKey(key)) { relConfig.enabled = prevConfigSet[key].enabled; } // Refresh distributions. if (distributions.Length > 0) { relConfig.childKeys = RefreshDistributions(key, refreshedConfigSet, distributions, prevConfigSet); } // Save configuration. refreshedConfigSet.Add(key, relConfig); // Add key to list to send back to parent. childKeys.Add(key); } return(childKeys.ToArray()); }
private string[] RefreshPlatforms(string keyChain, ConfigDictionary refreshedConfigSet, ConfigDictionary prevConfigSet) { List <string> childKeys = new List <string>(); BuildPlatform[] platforms = BuildSettings.platformList.platforms; for (int i = 0; i < platforms.Length; i++) { // Skip if platform is disabled or if it doesn't have any enabled architectures. if (!platforms[i].enabled || !platforms[i].atLeastOneArch) { continue; } string key = keyChain + "/" + platforms[i].platformName; Configuration relConfig = new Configuration(); // Check for duplicate key. if (refreshedConfigSet.ContainsKey(key)) { continue; } // Copy previous settings if they exist. if (prevConfigSet != null && prevConfigSet.ContainsKey(key)) { relConfig.enabled = prevConfigSet[key].enabled; } // Refresh architectures. BuildArchitecture[] architectures = platforms[i].architectures; if (architectures.Length > 0) { relConfig.childKeys = RefreshArchitectures(key, refreshedConfigSet, architectures, platforms[i].distributionList.distributions, prevConfigSet); } // Save configuration. refreshedConfigSet.Add(key, relConfig); // Add key to list to send back to parent. childKeys.Add(key); } return(childKeys.ToArray()); }
public void Subsidiary() { var s = @" key1: value sub1 sub2 sub3 key2: sub1 sub2 "; var dict = new ConfigDictionary(new StringReader(s)); Assert.IsTrue(dict.ContainsKey("key1")); { var cv = dict["key1"]; Assert.AreEqual("value", cv.Value); CollectionAssert.AreEqual(new []{ "sub1", "sub2", "sub3" }, cv.Subsididary); } Assert.IsTrue(dict.ContainsKey("key2")); { var cv = dict["key2"]; Assert.AreEqual("", cv.Value); CollectionAssert.AreEqual(new []{ "sub1", "sub2" }, cv.Subsididary); } Dump(dict); }
public void MultipleKeysAndSubsidiary() { var s = @" # comment key1:value11 value12 key1:value21 value22 value23 key1:value31 value32 value33 value34 "; var dict = new ConfigDictionary(new StringReader(s)); Assert.IsTrue(dict.ContainsKey("key1")); var cv = dict["key1"]; Assert.AreEqual("value11", cv.Value); CollectionAssert.AreEqual(new[] { "value12" }, cv.Subsididary); cv = cv.NextValue(); Assert.AreEqual("value21", cv.Value); CollectionAssert.AreEqual(new[] { "value22", "value23" }, cv.Subsididary); cv = cv.NextValue(); Assert.AreEqual("value31", cv.Value); CollectionAssert.AreEqual(new[] { "value32", "value33", "value34" }, cv.Subsididary); cv = cv.NextValue(); Assert.IsNull(cv); var array = dict["key1"].Collect(); Assert.AreEqual(3, array.Count); Assert.AreEqual("value11", array[0].Value); Assert.AreEqual("value21", array[1].Value); Assert.AreEqual("value31", array[2].Value); CollectionAssert.AreEqual(new[] { "value12" }, array[0].Subsididary); CollectionAssert.AreEqual(new[] { "value22", "value23" }, array[1].Subsididary); CollectionAssert.AreEqual(new[] { "value32", "value33", "value34" }, array[2].Subsididary); Dump(dict); }
public void MultipleKeys() { var s = @" # comment key1:value1 key1:value2 key1:value3 "; var dict = new ConfigDictionary(new StringReader(s)); Assert.IsTrue(dict.ContainsKey("key1")); var cv = dict["key1"]; Assert.AreEqual("value1", cv.Value); cv = cv.NextValue(); Assert.AreEqual("value2", cv.Value); cv = cv.NextValue(); Assert.AreEqual("value3", cv.Value); cv = cv.NextValue(); Assert.IsNull(cv); var array = dict["key1"].Collect(); Assert.AreEqual(3, array.Count); Assert.AreEqual("value1", array[0].Value); Assert.AreEqual("value2", array[1].Value); Assert.AreEqual("value3", array[2].Value); Dump(dict); }
private string[] RefreshPlatforms(string keyChain, ConfigDictionary refreshedConfigSet, ConfigDictionary prevConfigSet) { List <string> childKeys = new List <string>(); List <BuildPlatform> platforms = BuildSettings.platformList.platforms; for (int i = 0; i < platforms.Count; i++) { // Skip if platform is disabled or if it doesn't have any enabled architectures. if (!platforms[i].enabled || !platforms[i].atLeastOneArch) { continue; } string key = keyChain + "/" + platforms[i].platformName; Configuration relConfig = new Configuration(); // Check for duplicate key. if (refreshedConfigSet.ContainsKey(key)) { continue; } // Copy previous settings if they exist. if (prevConfigSet != null && prevConfigSet.ContainsKey(key)) { relConfig.enabled = prevConfigSet[key].enabled; } // Refresh architectures. BuildArchitecture[] architectures = platforms[i].architectures; if (architectures.Length > 0) { relConfig.childKeys = RefreshArchitectures(key, refreshedConfigSet, platforms[i].variantKey, architectures, platforms[i].distributionList.distributions, prevConfigSet); } // Scan ahead for other versions of this platform with different variants. for (int j = i; j < platforms.Count; j++) { BuildPlatform otherPlatform = platforms[j]; if (otherPlatform.platformName == platforms[i].platformName && otherPlatform.enabled && otherPlatform.atLeastOneArch) { List <string> currentKeys = new List <string>(relConfig.childKeys); string[] additionalKeys = RefreshArchitectures(key, refreshedConfigSet, otherPlatform.variantKey, otherPlatform.architectures, otherPlatform.distributionList.distributions, prevConfigSet); for (int k = 0; k < additionalKeys.Length; k++) { if (!currentKeys.Contains(additionalKeys[k])) { currentKeys.Add(additionalKeys[k]); } } relConfig.childKeys = currentKeys.ToArray(); } } // Save configuration. refreshedConfigSet.Add(key, relConfig); // Add key to list to send back to parent. childKeys.Add(key); } return(childKeys.ToArray()); }