aspnetcore/src/PackageArchive/Archive.targets

98 lines
4.2 KiB
XML

<Project>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- Default items -->
<ItemGroup>
<ProjectReference Include="$(MSBuildThisFileDirectory)Scenario.*\Scenario.*.*proj" ReferenceOutputAssembly="false" />
<ArchiveBaseline Include="$(MSBuildProjectDirectory)\ArchiveBaseline.*.txt" />
</ItemGroup>
<!-- Targets items -->
<Target Name="PrepareOutputPaths">
<MakeDir Directories="$(TargetDir)" />
<Delete Files="$(TargetPath)" />
</Target>
<PropertyGroup>
<CollectInputsDependsOn Condition=" '$(IncludeNupkgFiles)' == 'false' ">$(CollectInputsDependsOn);CollectNupkgExclusions</CollectInputsDependsOn>
<CollectInputsDependsOn Condition=" '$(IncludeXmlDocs)' == 'false' ">$(CollectInputsDependsOn);CollectXmlExclusions</CollectInputsDependsOn>
<CollectInputsDependsOn Condition=" '$(IsIncremental)' == 'true' ">$(CollectInputsDependsOn);CollectBaselineExclusions</CollectInputsDependsOn>
</PropertyGroup>
<Target Name="CollectNupkgExclusions">
<ItemGroup>
<ArchiveExclusions Include="$(RestorePackagesPath)**\*.nupkg" />
</ItemGroup>
</Target>
<Target Name="CollectXmlExclusions">
<ItemGroup>
<_ArchiveItemXml Include="$(RestorePackagesPath)**\*.xml" />
</ItemGroup>
<Message Text="Found @(_ArchiveItemXml->Count()) xml files that might be docxml" />
<RepoTasks.GetDocXmlFiles Files="@(_ArchiveItemXml)">
<Output TaskParameter="XmlDocFiles" ItemName="ArchiveExclusions" />
</RepoTasks.GetDocXmlFiles>
</Target>
<Target Name="CollectBaselineExclusions">
<ReadLinesFromFile File="%(ArchiveBaseline.Identity)" Condition="'%(ArchiveBaseline.Identity)' != ''">
<Output TaskParameter="Lines" ItemName="PreviousArchiveItem" />
</ReadLinesFromFile>
<ItemGroup>
<ArchiveExclusions Include="$(RestorePackagesPath)%(PreviousArchiveItem.Identity)" Condition=" '%(PreviousArchiveItem.Identity)' != '' " />
</ItemGroup>
</Target>
<Target Name="CollectInputs" DependsOnTargets="$(CollectInputsDependsOn)">
<ItemGroup>
<ArchiveItem Include="$(RestorePackagesPath)**\*" Exclude="@(ArchiveExclusions)" />
</ItemGroup>
<Message Text="Found @(ArchiveItem->Count()) files to put in the CI package archive" />
</Target>
<Target Name="CreateArchive" Outputs="$(TargetPath)">
<Warning Text="No files were found to put into $(TargetPath)"
Condition="@(ArchiveItem->Count()) == 0 AND '$(IsIncremental)' == 'true' " />
<Error Text="No files were found to put into $(TargetPath)"
Condition="@(ArchiveItem->Count()) == 0 AND '$(IsIncremental)' != 'true' " />
<ZipArchive
File="$(TargetPath)"
SourceFiles="@(ArchiveItem)"
WorkingDirectory="$(RestorePackagesPath)"
Overwrite="true"
Condition="@(ArchiveItem->Count()) != 0 AND '$(MSBuildProjectExtension)' == '.zipproj'" />
<RepoTasks.CreateLzma
OutputPath="$(TargetPath)"
Sources="$(RestorePackagesPath)"
Condition="@(ArchiveItem->Count()) != 0 AND '$(MSBuildProjectExtension)' == '.lzmaproj'" />
</Target>
<Target Name="CheckForInvalidConfig">
<Error Text=".lzmaproj currently only supports zipping an entire directory with everything in it."
Condition="'$(MSBuildProjectExtension)' == '.lzmaproj' AND ( '$(IsIncremental)' == 'true' OR '$(IncludeNupkgFiles)' == 'false' OR '$(IncludeXmlDocs)' == 'false' ) "/>
</Target>
<Target Name="CheckForPreviousReleaseArchiveBaseline" Condition=" '$(AspNetCorePatchVersion)' != '0' AND '$(IsIncremental)' == 'true' ">
<PropertyGroup>
<PreviousStableVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$([MSBuild]::Subtract($(AspNetCorePatchVersion), 1))</PreviousStableVersion>
</PropertyGroup>
<Error Text="The ArchiveBaseline for previous release (v$(PreviousStableVersion)) could not be found. This is required to build the incremental archives. See instructions in $(MSBuildThisFileDirectory)ZipManifestGenerator\README.md"
Condition="! Exists('$(MSBuildProjectDirectory)\ArchiveBaseline.$(PreviousStableVersion).txt')" />
</Target>
<Target Name="Build"
DependsOnTargets="PrepareOutputPaths;CheckForInvalidConfig;CheckForPreviousReleaseArchiveBaseline;CollectInputs;CreateArchive"
Outputs="$(TargetPath)" />
</Project>