Skip to content

Commit 8dbbf83

Browse files
committed
Expose the TemporaryProject class as public
1 parent d19610f commit 8dbbf83

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

src/nugraph/TemporaryProject.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,43 @@
1212
using NuGet.Frameworks;
1313
using NuGet.Packaging.Core;
1414
using NuGet.Protocol.Core.Types;
15+
using NuGet.Versioning;
1516
using static NuGet.Frameworks.FrameworkConstants.CommonFrameworks;
1617

1718
namespace nugraph;
1819

19-
internal sealed class TemporaryProject : IDisposable
20+
public sealed class TemporaryProject : IDisposable
2021
{
2122
private static readonly Encoding Utf8NoBom = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);
2223

2324
private readonly DirectoryInfo _directory;
2425

25-
private TemporaryProject(PackageIdentity package, NuGetFramework targetFramework)
26+
public TemporaryProject() : this(package: null, targetFramework: null)
27+
{
28+
}
29+
30+
private TemporaryProject(PackageIdentity? package, NuGetFramework? targetFramework)
2631
{
2732
_directory = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "nugraph", Path.GetRandomFileName().Replace(".", "", StringComparison.OrdinalIgnoreCase)));
2833
_directory.Create();
2934

30-
var project = new XElement("Project", new XAttribute("Sdk", "Microsoft.NET.Sdk"),
31-
new XElement("PropertyGroup",
32-
new XElement("TargetFramework", targetFramework.GetShortFolderName())),
33-
new XElement("ItemGroup",
35+
var project = new XElement("Project", new XAttribute("Sdk", "Microsoft.NET.Sdk"));
36+
37+
if (targetFramework != null)
38+
{
39+
project.Add(new XElement("PropertyGroup",
40+
new XElement("TargetFramework", targetFramework.GetShortFolderName())));
41+
}
42+
43+
if (package != null)
44+
{
45+
project.Add(new XElement("ItemGroup",
3446
new XElement("PackageReference", new XAttribute("Include", package.Id), new XAttribute("Version", package.Version?.ToString() ?? "*"))));
47+
}
3548

3649
File = new FileInfo(Path.Combine(_directory.FullName, "project.csproj"));
37-
Package = package;
38-
TargetFramework = targetFramework;
50+
Package = package ?? new PackageIdentity("", new NuGetVersion(0, 0, 0));
51+
TargetFramework = targetFramework ?? NuGetFramework.UnsupportedFramework;
3952

4053
var settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true, Encoding = Utf8NoBom };
4154
using var xmlWriter = XmlWriter.Create(File.FullName, settings);
@@ -44,6 +57,8 @@ private TemporaryProject(PackageIdentity package, NuGetFramework targetFramework
4457

4558
public static async Task<TemporaryProject> CreateAsync(PackageIdentity package, NuGetFramework? targetFramework, DirectoryInfo? sdk, ISettings nugetSettings, ILogger logger, CancellationToken cancellationToken)
4659
{
60+
ArgumentNullException.ThrowIfNull(logger, nameof(logger));
61+
4762
var (identity, resolvedTargetFramework) = await ResolveAsync(package, targetFramework, sdk, nugetSettings, logger, cancellationToken);
4863
return new TemporaryProject(identity, resolvedTargetFramework);
4964
}

0 commit comments

Comments
 (0)