Generate the package version props file
This commit is contained in:
parent
44b84a8da7
commit
d2e49a726c
|
|
@ -36,18 +36,18 @@
|
|||
Build tools will *verify* that these repos will be unaffected
|
||||
by the patch update and do not need updating.
|
||||
-->
|
||||
<ShippedRepository Include="Caching" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Common" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Configuration" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="DependencyInjection" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="DotNetTools" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="EventNotification" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="FileSystem" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="HtmlAbstractions" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="JsonPatch" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Logging" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Microsoft.Data.Sqlite" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Options" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Testing" Branch="rel/2.0.0" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Caching" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Common" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Configuration" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="DependencyInjection" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="DotNetTools" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="EventNotification" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="FileSystem" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="HtmlAbstractions" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="JsonPatch" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Logging" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Microsoft.Data.Sqlite" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Options" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
<ShippedRepository Include="Testing" Branch="patch/2.0.1" Commit="" CloneUrl="git@github.com:aspnet/%(Identity)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
<Target Name="_BuildRepository">
|
||||
<PropertyGroup>
|
||||
<!-- If there are duplicate properties, the properties which are defined later in the order would override the earlier ones -->
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration) /p:CommitHash=$(CommitHash)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,10 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="2.0.2-servicing-25715-02" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="2.0.2-servicing-25715-02" Source="$(DotNetCoreFeed)" Mirror="true">
|
||||
<VariableName>RuntimeFrameworkVersion</VariableName>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Microsoft.NETCore.DotNetHostPolicy" Version="2.0.2-servicing-25715-02" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.DotNetHostResolver" Version="2.0.2-servicing-25715-02" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
</ItemGroup>
|
||||
|
|
@ -35,16 +38,19 @@
|
|||
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true">
|
||||
<!-- This version is required for Razor to build the VSIX for VS. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>MicrosoftCodeAnalysisCommonToolingPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true">
|
||||
<!-- This version is required for Razor to build the VSIX for VS. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>MicrosoftCodeAnalysisCSharpToolingPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Remote.Razor.ServiceHub" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true">
|
||||
<!-- This version is required for Razor to build the VSIX for VS. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>MicrosoftCodeAnalysisWorkspacesCommonToolingPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.LanguageServices" Version="2.6.0-beta1-61924-08" Source="$(RoslynFeed)" Private="true" />
|
||||
|
|
@ -135,6 +141,7 @@
|
|||
<ExternalDependency Include="Newtonsoft.Json" Version="9.0.1" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- This version is used by tooling packages to match what is in VS and MSBuild. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>NewtonsoftJsonToolingPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Newtonsoft.Json" Version="10.0.1" Source="$(DefaultNuGetFeed)">
|
||||
<!-- This version is used by runtime packages. -->
|
||||
|
|
@ -171,6 +178,7 @@
|
|||
<ExternalDependency Include="xunit.assert" Version="2.2.0" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- EF's benchmarks use a different version of xunit.assert -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>EFBenchmarksXunitAssertPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="xunit.assert" Version="2.3.0-beta2-build3683" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- EF's benchmarks use a different version of xunit.assert -->
|
||||
|
|
@ -181,6 +189,7 @@
|
|||
<ExternalDependency Include="xunit" Version="2.2.0" Source="$(DefaultNuGetFeed)">
|
||||
<!-- It is okay to have multiple versions of test-only dependencies. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>XunitStablePackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="xunit" Version="2.3.0-beta2-build3683" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- It is okay to have multiple versions of test-only dependencies. -->
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<IntermediateMirrorPackageDir>$(IntermediateDir)mirror\</IntermediateMirrorPackageDir>
|
||||
<!-- For external packages that come from feeds we don't mirror. -->
|
||||
<IntermediateExternalPackageDir>$(IntermediateDir)ext\</IntermediateExternalPackageDir>
|
||||
<GeneratedPackageVersionPropsPath>$(IntermediateDir)dependencies.props</GeneratedPackageVersionPropsPath>
|
||||
<TcVcsIdPrefix>Patch20_</TcVcsIdPrefix>
|
||||
|
||||
<PrepareDependsOn>$(PrepareDependsOn);CleanArtifacts;CleanUniverseArtifacts</PrepareDependsOn>
|
||||
|
|
@ -40,6 +41,19 @@
|
|||
DestinationFolder="$(IntermediateMirrorPackageDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GeneratePackageVersionPropsFile" DependsOnTargets="ResolveRepoInfo">
|
||||
<ItemGroup>
|
||||
<_LineupPackages Include="@(ExternalDependency)" />
|
||||
<_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
|
||||
<_LineupPackages Include="%(ShippedArtifactInfo.PackageId)" Version="%(ShippedArtifactInfo.Version)" Condition=" '%(ShippedArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
|
||||
</ItemGroup>
|
||||
<RepoTasks.GeneratePackageVersionPropsFile
|
||||
Packages="@(_LineupPackages)"
|
||||
OutputPath="$(GeneratedPackageVersionPropsPath)" />
|
||||
|
||||
<Copy SourceFiles="$(GeneratedPackageVersionPropsPath)" DestinationFolder="$(ArtifactsDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CleanUniverseArtifacts">
|
||||
<RemoveDir Directories="$(_CloneRepositoryRoot)" Condition="Exists('$(_CloneRepositoryRoot)') AND '$(ClearRepositoryCloneRoot)' != 'false'" />
|
||||
<RemoveDir Directories="$(RepositoryRoot)obj" Condition="Exists('$(RepositoryRoot)obj')" />
|
||||
|
|
@ -125,7 +139,7 @@
|
|||
</Target>
|
||||
|
||||
<Target Name="BuildRepositories"
|
||||
DependsOnTargets="_PrepareRepositories;_CreateRepositoriesListWithCommits;ComputeGraph;_BuildRepositories" />
|
||||
DependsOnTargets="_PrepareRepositories;_CreateRepositoriesListWithCommits;GeneratePackageVersionPropsFile;ComputeGraph;_BuildRepositories" />
|
||||
|
||||
<Target Name="ResolveRepoInfo" DependsOnTargets="_PrepareRepositories">
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,118 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using RepoTasks.ProjectModel;
|
||||
using RepoTasks.Utilities;
|
||||
using System.Text;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class GeneratePackageVersionPropsFile : Task
|
||||
{
|
||||
[Required]
|
||||
public ITaskItem[] Packages { get; set; }
|
||||
|
||||
[Required]
|
||||
public string OutputPath { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
OutputPath = OutputPath.Replace('\\', '/');
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(OutputPath));
|
||||
|
||||
var props = new XElement("PropertyGroup");
|
||||
var root = new XElement("Project", props);
|
||||
var doc = new XDocument(root);
|
||||
|
||||
var varNames = new HashSet<string>();
|
||||
var versionElements = new List<XElement>();
|
||||
foreach (var pkg in Packages)
|
||||
{
|
||||
var packageVersion = pkg.GetMetadata("Version");
|
||||
|
||||
if (string.IsNullOrEmpty(packageVersion))
|
||||
{
|
||||
Log.LogError("Package {0} is missing the Version metadata", pkg.ItemSpec);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
string packageVarName;
|
||||
if (!string.IsNullOrEmpty(pkg.GetMetadata("VariableName")))
|
||||
{
|
||||
packageVarName = pkg.GetMetadata("VariableName");
|
||||
if (!packageVarName.EndsWith("Version", StringComparison.Ordinal))
|
||||
{
|
||||
Log.LogError("VariableName for {0} must end in 'Version'", pkg.ItemSpec);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var first = true;
|
||||
foreach (var ch in pkg.ItemSpec)
|
||||
{
|
||||
if (ch == '.')
|
||||
{
|
||||
first = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (first)
|
||||
{
|
||||
first = false;
|
||||
sb.Append(char.ToUpperInvariant(ch));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(ch);
|
||||
}
|
||||
}
|
||||
sb.Append("PackageVersion");
|
||||
packageVarName = sb.ToString();
|
||||
}
|
||||
|
||||
var packageTfm = pkg.GetMetadata("TargetFramework");
|
||||
var key = $"{packageVarName}/{packageTfm}";
|
||||
if (varNames.Contains(key))
|
||||
{
|
||||
Log.LogError("Multiple packages would produce {0} in the generated dependencies.props file. Set VariableName to differentiate the packages manually", key);
|
||||
continue;
|
||||
}
|
||||
varNames.Add(key);
|
||||
var elem = new XElement(packageVarName, packageVersion);
|
||||
if (!string.IsNullOrEmpty(packageTfm))
|
||||
{
|
||||
elem.Add(new XAttribute("Condition", $" '$(TargetFramework)' == '{packageTfm}' "));
|
||||
}
|
||||
versionElements.Add(elem);
|
||||
}
|
||||
|
||||
foreach (var item in versionElements.OrderBy(p => p.Name.ToString()))
|
||||
{
|
||||
props.Add(item);
|
||||
}
|
||||
|
||||
var settings = new XmlWriterSettings
|
||||
{
|
||||
OmitXmlDeclaration = true,
|
||||
Indent = true,
|
||||
};
|
||||
using (var writer = XmlWriter.Create(OutputPath, settings))
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"Generate {OutputPath}");
|
||||
doc.Save(writer);
|
||||
}
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,5 +7,6 @@
|
|||
<UsingTask TaskName="RepoTasks.CopyPackagesToSplitFolders" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.DownloadNuGetPackages" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GenerateLineup" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GeneratePackageVersionPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.VerifyCoherentVersions" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Reference in New Issue