/// <summary>
        /// Adds targets from TargetDefinitions to dependencies world dictionary
        /// </summary>
        private void PopulateTargets()
        {
            foreach (var targetDef in TargetDefinitions)
            {
                if (string.IsNullOrEmpty(targetDef.ItemSpec) || targetDef.ItemSpec.Contains("/"))
                {
                    // skip "target/rid"s and only consume actual targets
                    continue;
                }

                var dependencyType = GetDependencyType(targetDef.GetMetadata(MetadataKeys.Type));
                if (dependencyType != DependencyType.Target)
                {
                    // keep only targets here
                    continue;
                }

                var target = new TargetMetadata(targetDef);

                Targets[targetDef.ItemSpec] = target;

                // add target to the world now, since it does not have parents
                DependenciesWorld[targetDef.ItemSpec] = target;
            }
        }
示例#2
0
            public DependencyMetadata AddDependency(string itemSpec, IImmutableDictionary <string, string> properties)
            {
                if (!itemSpec.Contains("/") && !Targets.ContainsKey(itemSpec))
                {
                    var newTarget = new TargetMetadata(properties);
                    Targets.Add(itemSpec, newTarget);
                }

                var newDependency = new DependencyMetadata(itemSpec, properties);

                DependenciesWorld[itemSpec] = newDependency;

                return(newDependency);
            }
示例#3
0
            public DependencyMetadata UpdateDependency(string itemSpec, IImmutableDictionary <string, string> properties)
            {
                DependencyMetadata dependencyMetadata = null;

                if (!DependenciesWorld.TryGetValue(itemSpec, out dependencyMetadata))
                {
                    return(null);
                }

                if (!itemSpec.Contains("/"))
                {
                    TargetMetadata targetMetadata = null;
                    if (Targets.TryGetValue(itemSpec, out targetMetadata))
                    {
                        targetMetadata.SetProperties(properties);
                    }
                }

                dependencyMetadata.SetProperties(properties);

                RemoveNodeFromCache(itemSpec);

                return(dependencyMetadata);
            }