/// <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; } }
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); }
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); }