private static void DumpNode <TItem>(GraphNode <TItem> node, Action <string> write, int level) { var output = new StringBuilder(); if (level > 0) { output.Append(LIGHT_VERTICAL_AND_RIGHT); output.Append(new string(LIGHT_HORIZONTAL, level)); output.Append(" "); } output.Append($"{node.GetIdAndRange()} ({node.Disposition})"); if (node.Item != null && node.Item.Key != null) { output.Append($" => {node.Item.Key.ToString()}"); } else { output.Append($" => ???"); } write(output.ToString()); }
/// <summary> /// Prints the id and version of a node. If the version does not exist use the range. /// </summary> /// <remarks>Projects will not display a version or range.</remarks> public static string GetIdAndVersionOrRange <TItem>(this GraphNode <TItem> node) { var id = node.GetId(); // Ignore versions for projects, they are not useful since // only one instance of the id may exist in the graph. if (node.IsPackage()) { var version = node.GetVersionOrDefault(); // Print the version if it exists, otherwise use the id. if (version != null) { return($"{id} {version.ToNormalizedString()}"); } else { // The node was unresolved, use the range instead. return(node.GetIdAndRange()); } } return(id); }