Merge branch 'release/2.1' into dev
This commit is contained in:
commit
f9e6ebfd51
|
|
@ -70,7 +70,7 @@
|
||||||
<RepoTasks.AddMetapackageReferences
|
<RepoTasks.AddMetapackageReferences
|
||||||
ReferencePackagePath="$(MetapackageWorkDirectory)$(MetapackageName).csproj"
|
ReferencePackagePath="$(MetapackageWorkDirectory)$(MetapackageName).csproj"
|
||||||
MetapackageReferenceType="$(MetapackageReferenceType)"
|
MetapackageReferenceType="$(MetapackageReferenceType)"
|
||||||
LockToExactVersions="$(LockToExactVersions)"
|
DependencyVersionRangeType="$(MetapackageDependencyVersionRangeType)"
|
||||||
BuildArtifacts="@(ArtifactInfo)"
|
BuildArtifacts="@(ArtifactInfo)"
|
||||||
PackageArtifacts="@(PackageArtifact)"
|
PackageArtifacts="@(PackageArtifact)"
|
||||||
ExternalDependencies="@(ExternalDependency)" />
|
ExternalDependencies="@(ExternalDependency)" />
|
||||||
|
|
@ -87,7 +87,7 @@
|
||||||
<AdditionalProperties>
|
<AdditionalProperties>
|
||||||
MetapackageName=Microsoft.AspNetCore.App;
|
MetapackageName=Microsoft.AspNetCore.App;
|
||||||
MetapackageReferenceType=AppMetapackage;
|
MetapackageReferenceType=AppMetapackage;
|
||||||
LockToExactVersions=true
|
MetapackageDependencyVersionRangeType=MajorMinor
|
||||||
</AdditionalProperties>
|
</AdditionalProperties>
|
||||||
</_MetapackageBuilderProject>
|
</_MetapackageBuilderProject>
|
||||||
|
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
<AdditionalProperties>
|
<AdditionalProperties>
|
||||||
MetapackageName=Microsoft.AspNetCore.All;
|
MetapackageName=Microsoft.AspNetCore.All;
|
||||||
MetapackageReferenceType=AllMetapackage;
|
MetapackageReferenceType=AllMetapackage;
|
||||||
LockToExactVersions=false
|
MetapackageDependencyVersionRangeType=Minimum
|
||||||
</AdditionalProperties>
|
</AdditionalProperties>
|
||||||
</_MetapackageBuilderProject>
|
</_MetapackageBuilderProject>
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
<AdditionalProperties>
|
<AdditionalProperties>
|
||||||
MetapackageName=Microsoft.AspNetCore.Analyzers;
|
MetapackageName=Microsoft.AspNetCore.Analyzers;
|
||||||
MetapackageReferenceType=Analyzer;
|
MetapackageReferenceType=Analyzer;
|
||||||
LockToExactVersions=true
|
MetapackageDependencyVersionRangeType=Minimum
|
||||||
</AdditionalProperties>
|
</AdditionalProperties>
|
||||||
</_MetapackageBuilderProject>
|
</_MetapackageBuilderProject>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using System.Linq;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
using NuGet.Versioning;
|
||||||
using RepoTasks.Utilities;
|
using RepoTasks.Utilities;
|
||||||
|
|
||||||
namespace RepoTasks
|
namespace RepoTasks
|
||||||
|
|
@ -19,7 +20,14 @@ namespace RepoTasks
|
||||||
public string MetapackageReferenceType { get; set; }
|
public string MetapackageReferenceType { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public bool LockToExactVersions { get; set; }
|
public string DependencyVersionRangeType { get; set; }
|
||||||
|
|
||||||
|
// MSBuild doesn't allow binding to enums directly.
|
||||||
|
private enum VersionRangeType
|
||||||
|
{
|
||||||
|
Minimum, // [1.1.1, )
|
||||||
|
MajorMinor, // [1.1.1, 1.2.0)
|
||||||
|
}
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public ITaskItem[] BuildArtifacts { get; set; }
|
public ITaskItem[] BuildArtifacts { get; set; }
|
||||||
|
|
@ -32,6 +40,12 @@ namespace RepoTasks
|
||||||
|
|
||||||
public override bool Execute()
|
public override bool Execute()
|
||||||
{
|
{
|
||||||
|
if (!Enum.TryParse<VersionRangeType>(DependencyVersionRangeType, out var dependencyVersionType))
|
||||||
|
{
|
||||||
|
Log.LogError("Unexpected value {0} for DependencyVersionRangeType", DependencyVersionRangeType);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Parse input
|
// Parse input
|
||||||
var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
||||||
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
||||||
|
|
@ -65,8 +79,13 @@ namespace RepoTasks
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
var packageVersionValue = LockToExactVersions ? $"[{packageVersion}]" : packageVersion;
|
if (string.IsNullOrEmpty(packageVersion))
|
||||||
|
{
|
||||||
|
Log.LogError("Missing version information for package {0}", packageName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var packageVersionValue = GetDependencyVersion(dependencyVersionType, packageName, packageVersion);
|
||||||
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
||||||
|
|
||||||
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
|
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
|
||||||
|
|
@ -81,7 +100,14 @@ namespace RepoTasks
|
||||||
{
|
{
|
||||||
var packageName = package.ItemSpec;
|
var packageName = package.ItemSpec;
|
||||||
var packageVersion = package.GetMetadata("Version");
|
var packageVersion = package.GetMetadata("Version");
|
||||||
var packageVersionValue = LockToExactVersions ? $"[{packageVersion}]" : packageVersion;
|
|
||||||
|
if (string.IsNullOrEmpty(packageVersion))
|
||||||
|
{
|
||||||
|
Log.LogError("Missing version information for package {0}", packageName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var packageVersionValue = GetDependencyVersion(dependencyVersionType, packageName, packageVersion);
|
||||||
|
|
||||||
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
||||||
|
|
||||||
|
|
@ -99,7 +125,25 @@ namespace RepoTasks
|
||||||
xmlDoc.AppendChild(projectElement);
|
xmlDoc.AppendChild(projectElement);
|
||||||
xmlDoc.Save(ReferencePackagePath);
|
xmlDoc.Save(ReferencePackagePath);
|
||||||
|
|
||||||
return true;
|
return !Log.HasLoggedErrors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetDependencyVersion(VersionRangeType dependencyVersionType, string packageName, string packageVersion)
|
||||||
|
{
|
||||||
|
switch (dependencyVersionType)
|
||||||
|
{
|
||||||
|
case VersionRangeType.MajorMinor:
|
||||||
|
if (!NuGetVersion.TryParse(packageVersion, out var nugetVersion))
|
||||||
|
{
|
||||||
|
Log.LogError("Invalid NuGet version '{0}' for package {1}", packageVersion, packageName);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $"[{packageVersion}, {nugetVersion.Major}.{nugetVersion.Minor + 1}.0)";
|
||||||
|
case VersionRangeType.Minimum:
|
||||||
|
return packageVersion;
|
||||||
|
default:
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue