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()); }
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; }
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()); }
/// <summary> /// Reads an XML node, whose name is "SourceLocation" and contains either Path node with file path to a Resource file /// or MiscData node with a dictionary of key/value pairs. /// </summary> /// <param name="reader">Reader whose position is at SourceLocation</param> public void ReadXml(XmlReader reader) { reader.ReadStartElement("SourceLocation"); reader.MoveToContent(); switch (reader.Name) { case "Path": reader.ReadStartElement(); Value = reader.ReadString(); reader.ReadEndElement(); break; case "MiscData": ConfigDictionary dictionary = new ConfigDictionary(); reader.ReadStartElement(); while (reader.Name != "MiscData") { reader.MoveToContent(); if (reader.Name == "Param") { reader.MoveToAttribute("Name"); string key = reader.ReadContentAsString(); reader.MoveToElement(); string value = reader.ReadString(); reader.ReadEndElement(); dictionary.Add(key, value); } reader.MoveToContent(); } Value = dictionary; break; default: Value = null; break; } while (reader.Name != "SourceLocation") { reader.Read(); //Read until the closing tag. } reader.ReadEndElement(); //Skip the outer closing element. }
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()); }