Skip to content

Commit f294c49

Browse files
committed
Add links to nuget.org only for packages actually available on nuget.org
1 parent 4dc02ca commit f294c49

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [Unreleased][Unreleased]
8+
9+
* Links to nuget.org are now added only for packages which are actually available on the NuGet Gallery. Previously, a non-working link to nuget.org would be added for packages coming from private NuGet feeds.
10+
* Packages which are unavailable on the NuGet Gallery are now rendered in beige (moccasin), unless the `--no-links` options is specified.
11+
12+
Before:
13+
14+
```mermaid
15+
graph LR
16+
classDef default fill:aquamarine,stroke:#009061,color:#333333
17+
MyPrivatePackage --> Serilog
18+
```
19+
20+
After:
21+
22+
```mermaid
23+
graph LR
24+
classDef default fill:aquamarine,stroke:#009061,color:#333333
25+
classDef private fill:moccasin,stroke:#AF8844
26+
MyPrivatePackage --> Serilog
27+
class MyPrivatePackage private
28+
```
29+
730
## [0.4.0][0.4.0] - 2025-06-26
831

932
* Fixed an issue where a project reference (blue) could be wrongly identified as package reference (green)

src/nugraph/GraphCommand.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ protected override async Task<int> ExecuteAsync(CommandContext commandContext, G
4343
var source = settings.Source ?? environment.CurrentWorkingDirectory;
4444
var graphUrl = await console.Status().StartAsync($"Generating dependency graph for {source}".EscapeMarkup(), async context =>
4545
{
46+
var logger = new SpectreLogger(console, settings.LogLevel);
4647
var graph = await source.Match(
47-
file => ComputeDependencyGraphAsync(file, settings, cancellationToken),
48-
package => ComputeDependencyGraphAsync(package, settings, Settings.LoadDefaultSettings(settings.NuGetRoot), new SpectreLogger(console, settings.LogLevel), context, cancellationToken)
48+
file => ComputeDependencyGraphAsync(file, settings, logger, cancellationToken),
49+
package => ComputeDependencyGraphAsync(package, settings, Settings.LoadDefaultSettings(settings.NuGetRoot), logger, context, cancellationToken)
4950
);
5051
return await WriteGraphAsync(graph, settings);
5152
});
@@ -103,7 +104,7 @@ private static async Task<int> DiagnoseAsync(TextWriter stdOut, DirectoryInfo? s
103104
return result.ExitCode;
104105
}
105106

106-
private static async Task<DependencyGraph> ComputeDependencyGraphAsync(FileSystemInfo source, GraphCommandSettings settings, CancellationToken cancellationToken)
107+
private static async Task<DependencyGraph> ComputeDependencyGraphAsync(FileSystemInfo source, GraphCommandSettings settings, ILogger logger, CancellationToken cancellationToken)
107108
{
108109
var name = Path.GetFileNameWithoutExtension(source.Name);
109110
if (settings.Title == GraphCommandSettings.DefaultTitle)
@@ -115,7 +116,12 @@ private static async Task<DependencyGraph> ComputeDependencyGraphAsync(FileSyste
115116
var lockFile = new LockFileFormat().Read(projectInfo.ProjectAssetsFile.FullName);
116117
Predicate<Package> filter = projectInfo.CopyLocalPackages.Count > 0 ? package => projectInfo.CopyLocalPackages.Contains(package.Name) : _ => true;
117118
var (packages, roots) = lockFile.ReadPackages(targetFramework.GetShortFolderName(), settings.RuntimeIdentifier, filter);
118-
return new DependencyGraph(packages, roots, ignores: settings.GraphIgnore);
119+
var dependencyGraph = new DependencyGraph(packages, roots, ignores: settings.GraphIgnore);
120+
if (!settings.NoLinks)
121+
{
122+
await dependencyGraph.AddLinksAsync(logger, cancellationToken);
123+
}
124+
return dependencyGraph;
119125
}
120126

121127
private static async Task<DependencyGraph> ComputeDependencyGraphAsync(PackageIdentity package, GraphCommandSettings settings, ISettings nugetSettings, ILogger logger, StatusContext context, CancellationToken cancellationToken)
@@ -126,7 +132,7 @@ private static async Task<DependencyGraph> ComputeDependencyGraphAsync(PackageId
126132
settings.Title = $"Dependency graph of {project.Package.Id} {project.Package.Version} ({project.TargetFramework.GetShortFolderName()})";
127133
}
128134
context.Status = $"Generating dependency graph for {project.Package.Id} {project.Package.Version} ({project.TargetFramework.GetShortFolderName()})".EscapeMarkup();
129-
return await ComputeDependencyGraphAsync(project.File, settings, cancellationToken);
135+
return await ComputeDependencyGraphAsync(project.File, settings, logger, cancellationToken);
130136
}
131137

132138
private static async Task<Uri?> WriteGraphAsync(DependencyGraph graph, GraphCommandSettings settings)
@@ -143,7 +149,6 @@ private static async Task<DependencyGraph> ComputeDependencyGraphAsync(PackageId
143149
{
144150
Direction = settings.GraphDirection,
145151
Title = settings.Title,
146-
IncludeLinks = !settings.NoLinks,
147152
IncludeVersions = settings.GraphIncludeVersions,
148153
WriteIgnoredPackages = settings.GraphWriteIgnoredPackages,
149154
};

0 commit comments

Comments
 (0)