Skip to content

Commit

Permalink
Ignore line endings when comparing AsnXml generated content
Browse files Browse the repository at this point in the history
  • Loading branch information
vcsjones committed Apr 29, 2024
1 parent 4681f63 commit b88785f
Showing 1 changed file with 28 additions and 11 deletions.
@@ -1,16 +1,34 @@
<Project>
<PropertyGroup>
<AsnXml />
<_AsnXmlDiffCmd>%24%28command -v diff%29 -q -a</_AsnXmlDiffCmd>
<_AsnXmlDiffCmd Condition="$([MSBuild]::IsOsPlatform('windows')) == 'true'">$(SystemRoot)\System32\fc.exe /a</_AsnXmlDiffCmd>
<_AsnXmlDiffCmd Condition="$([MSBuild]::IsOsPlatform('osx')) == 'true'">diff</_AsnXmlDiffCmd>
</PropertyGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)asn.xsd">
<Link>Common\System\Security\Cryptography\Asn1\asn.xsd</Link>
</None>
</ItemGroup>

<UsingTask
TaskName="CompareFilesIgnoreLineEndings"
TaskFactory="RoslynCodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
<ParameterGroup>
<GeneratedFile ParameterType="Microsoft.Build.Framework.ITaskItem" Required="true" />
<ExistingFile ParameterType="Microsoft.Build.Framework.ITaskItem" Required="true" />
<ContentsDiffer ParameterType="System.Boolean" Output="true" />
</ParameterGroup>
<Task>
<Using Namespace="System.IO" />
<Using Namespace="System.Linq" />
<Code Type="Fragment" Language="cs">
<![CDATA[
ContentsDiffer = !File.Exists(ExistingFile.ItemSpec) ||
!File.ReadLines(ExistingFile.ItemSpec).SequenceEqual(File.ReadLines(GeneratedFile.ItemSpec));
]]>
</Code>
</Task>
</UsingTask>

<Target Name="CompileAsn" BeforeTargets="CoreCompile"
Condition=" '@(AsnXml)' != '' "
Inputs="@(AsnXml);$(MSBuildThisFileDirectory)asn.xslt"
Expand All @@ -27,18 +45,17 @@
XmlInputPaths="@(AsnXml)"
OutputPaths="@(AsnXml -> '$(_AsnIntermediatePath)%(filename).cs')" />

<Exec
IgnoreExitCode="true"
StandardOutputImportance="Low"
Command="$(_AsnXmlDiffCmd) @(AsnXml -> '&quot;$(_AsnIntermediatePath)%(filename).cs&quot;') @(AsnXml -> '&quot;%(Identity).cs&quot;')">
<Output TaskParameter="ExitCode" ItemName="_AsnXmlDiffCode" />
</Exec>
<CompareFilesIgnoreLineEndings
GeneratedFile="@(AsnXml -> '$(_AsnIntermediatePath)%(filename).cs')"
ExistingFile="@(AsnXml -> '%(Identity).cs')">
<Output TaskParameter="ContentsDiffer" ItemName="_FilesDiffer" />
</CompareFilesIgnoreLineEndings>

<Copy
Condition="'@(_AsnXmlDiffCode)' != '0'"
Condition="'@(_FilesDiffer)' == 'true'"
SourceFiles="@(AsnXml -> '$(_AsnIntermediatePath)%(filename).cs')"
DestinationFiles="@(AsnXml -> '%(Identity).cs')" />

<Warning Condition="'@(_AsnXmlDiffCode)' != '0'" Text="AsnXml regenerated files, be sure to check them in: @(AsnXml -> '%(Identity).cs')" />
<Warning Condition="'@(_FilesDiffer)' == 'true'" Text="AsnXml regenerated files, be sure to check them in: @(AsnXml -> '%(Identity).cs')" />
</Target>
</Project>

0 comments on commit b88785f

Please sign in to comment.