예제 #1
0
        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());
        }
예제 #2
0
        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;
        }
예제 #3
0
        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());
        }
예제 #4
0
        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.
        }
예제 #6
0
        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());
        }