mirror of
https://github.com/FabInfra/capnproto-dotnetcore_Runtime.git
synced 2025-03-12 06:41:50 +01:00
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using System;
|
|
using System.IO;
|
|
using Microsoft.Build.Utilities;
|
|
|
|
namespace CapnpC.CSharp.MsBuild.Generation
|
|
{
|
|
public class CodeBehindWriter
|
|
{
|
|
public CodeBehindWriter(TaskLoggingHelper log)
|
|
{
|
|
Log = log;
|
|
}
|
|
|
|
public TaskLoggingHelper Log { get; }
|
|
|
|
public string WriteCodeBehindFile(string outputPath, CsFileGeneratorResult testFileGeneratorResult)
|
|
{
|
|
string directoryPath = Path.GetDirectoryName(outputPath) ?? throw new InvalidOperationException();
|
|
Log?.LogWithNameTag(Log.LogMessage, directoryPath);
|
|
|
|
Log?.LogWithNameTag(Log.LogMessage, $"Writing data to {outputPath}; path = {directoryPath}; generatedFilename = {testFileGeneratorResult.Filename}");
|
|
|
|
if (File.Exists(outputPath))
|
|
{
|
|
if (!FileSystemHelper.FileCompareContent(outputPath, testFileGeneratorResult.GeneratedCode))
|
|
{
|
|
File.WriteAllText(outputPath, testFileGeneratorResult.GeneratedCode);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
File.WriteAllText(outputPath, testFileGeneratorResult.GeneratedCode);
|
|
}
|
|
|
|
return outputPath;
|
|
}
|
|
}
|
|
}
|