Skip to content

Commit

Permalink
Merge pull request #284 from unoplatform/mergify/bp/release/stable/1.…
Browse files Browse the repository at this point in the history
…4/pr-283

fix(incremental): Don't write files that have not changed (backport #283)
  • Loading branch information
jeromelaban authored May 22, 2024
2 parents 1211344 + 236162e commit d41e0ee
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 20 deletions.
23 changes: 13 additions & 10 deletions src/Resizetizer/src/CreatePartialInfoPlistTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,21 @@ public override bool Execute()

var plistFilename = Path.Combine(IntermediateOutputPath, PlistName ?? "PartialInfo.plist");

using (var f = File.CreateText(plistFilename))
{
f.WriteLine(plistHeader);

if (!string.IsNullOrEmpty(Storyboard))
FileHelper.WriteFileIfChanged(
plistFilename,
Log,
writer =>
{
f.WriteLine(" <key>UILaunchStoryboardName</key>");
f.WriteLine($" <string>{Path.GetFileNameWithoutExtension(Storyboard)}</string>");
}
writer.WriteLine(plistHeader);

if (!string.IsNullOrEmpty(Storyboard))
{
writer.WriteLine(" <key>UILaunchStoryboardName</key>");
writer.WriteLine($" <string>{Path.GetFileNameWithoutExtension(Storyboard)}</string>");
}

f.WriteLine(plistFooter);
}
writer.WriteLine(plistFooter);
});
}
catch (Exception ex)
{
Expand Down
46 changes: 46 additions & 0 deletions src/Resizetizer/src/FileHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace Uno.Resizetizer
{
internal class FileHelper
{
public static void WriteFileIfChanged(string fileName, TaskLoggingHelper log, Action<StreamWriter> action)
{
var tempFile = Path.GetTempFileName();
try
{
using (var writer = File.CreateText(tempFile))
{
action(writer);
}

if (!File.Exists(fileName)
|| !File.ReadAllText(fileName).Equals(File.ReadAllText(tempFile)))
{
File.Move(tempFile, fileName);
}
else
{
log.LogMessage(MessageImportance.Low, $"Skipping unchanged {fileName}");
}

}
finally
{
try
{
File.Delete(tempFile);
}
catch
{
// ignore errors
}
}
}
}
}
12 changes: 9 additions & 3 deletions src/Resizetizer/src/GeneratePackageAppxManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,17 @@ public override bool Execute()
Log.LogWarning("Multiple AppxManifest files were provided. Only the first one will be used.");
}

var appx = XDocument.Load(AppxManifest[0].ItemSpec);
FileHelper.WriteFileIfChanged(
filename,
Log,
writer =>
{
var appx = XDocument.Load(AppxManifest[0].ItemSpec);

UpdateManifest(appx);
UpdateManifest(appx);

appx.Save(filename);
appx.Save(writer);
});

GeneratedAppxManifest = new TaskItem(filename);
}
Expand Down
8 changes: 4 additions & 4 deletions src/Resizetizer/src/GenerateSplashStoryboard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ public override bool Execute()
var dir = Path.GetDirectoryName(OutputFile);
Directory.CreateDirectory(dir);

using (var writer = File.CreateText(OutputFile))
{
SubstituteStoryboard(writer, image, rStr, gStr, bStr, aStr);
}
FileHelper.WriteFileIfChanged(
OutputFile,
Log,
writer => SubstituteStoryboard(writer, image, rStr, gStr, bStr, aStr));

return !Log.HasLoggedErrors;
}
Expand Down
7 changes: 4 additions & 3 deletions src/Resizetizer/src/GenerateWasmSplashAssets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@ public override bool Execute()
var dir = Path.GetDirectoryName(OutputFile);
Directory.CreateDirectory(dir);

using var writer = File.CreateText(OutputFile);

ProcessAppManifestFile(UserAppManifest.ToString(), info, writer);
FileHelper.WriteFileIfChanged(
OutputFile,
Log,
writer => ProcessAppManifestFile(UserAppManifest.ToString(), info, writer));

return true;
}
Expand Down

0 comments on commit d41e0ee

Please sign in to comment.