From 9113559a5b7ad3b3d496172ac3c1726966f092cf Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 22 May 2024 13:58:37 -0400 Subject: [PATCH 1/3] fix(incremental): Don't write files that have not changed (cherry picked from commit e69d8bbd917bc7c569af49e659bedac4b809589c) --- .../src/CreatePartialInfoPlistTask.cs | 23 +++++----- src/Resizetizer/src/FileHelper.cs | 45 +++++++++++++++++++ .../src/GenerateSplashStoryboard.cs | 8 ++-- .../src/GenerateWasmSplashAssets.cs | 7 +-- 4 files changed, 66 insertions(+), 17 deletions(-) create mode 100644 src/Resizetizer/src/FileHelper.cs diff --git a/src/Resizetizer/src/CreatePartialInfoPlistTask.cs b/src/Resizetizer/src/CreatePartialInfoPlistTask.cs index 97ece0c4..f69816ff 100644 --- a/src/Resizetizer/src/CreatePartialInfoPlistTask.cs +++ b/src/Resizetizer/src/CreatePartialInfoPlistTask.cs @@ -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(" UILaunchStoryboardName"); - f.WriteLine($" {Path.GetFileNameWithoutExtension(Storyboard)}"); - } + writer.WriteLine(plistHeader); + + if (!string.IsNullOrEmpty(Storyboard)) + { + writer.WriteLine(" UILaunchStoryboardName"); + writer.WriteLine($" {Path.GetFileNameWithoutExtension(Storyboard)}"); + } - f.WriteLine(plistFooter); - } + writer.WriteLine(plistFooter); + }); } catch (Exception ex) { diff --git a/src/Resizetizer/src/FileHelper.cs b/src/Resizetizer/src/FileHelper.cs new file mode 100644 index 00000000..f44ca452 --- /dev/null +++ b/src/Resizetizer/src/FileHelper.cs @@ -0,0 +1,45 @@ +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 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 + } + } + } + } +} diff --git a/src/Resizetizer/src/GenerateSplashStoryboard.cs b/src/Resizetizer/src/GenerateSplashStoryboard.cs index d2ff1137..34ca2918 100644 --- a/src/Resizetizer/src/GenerateSplashStoryboard.cs +++ b/src/Resizetizer/src/GenerateSplashStoryboard.cs @@ -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; } diff --git a/src/Resizetizer/src/GenerateWasmSplashAssets.cs b/src/Resizetizer/src/GenerateWasmSplashAssets.cs index 01eaa396..e79e530c 100644 --- a/src/Resizetizer/src/GenerateWasmSplashAssets.cs +++ b/src/Resizetizer/src/GenerateWasmSplashAssets.cs @@ -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; } From 9b70d256a09c26d40593eeb3ccd23acfe961f6c1 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 22 May 2024 14:06:37 -0400 Subject: [PATCH 2/3] chore: Adjust appxmanifest generation (cherry picked from commit b49daade5647ee3355f2b13f8fab1336b73fe24e) --- src/Resizetizer/src/GeneratePackageAppxManifest.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Resizetizer/src/GeneratePackageAppxManifest.cs b/src/Resizetizer/src/GeneratePackageAppxManifest.cs index 7437eeec..92263e32 100644 --- a/src/Resizetizer/src/GeneratePackageAppxManifest.cs +++ b/src/Resizetizer/src/GeneratePackageAppxManifest.cs @@ -65,11 +65,18 @@ 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); } From 236162e926ce946c19a68d3103a354bf547f1c2f Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 22 May 2024 14:26:49 -0400 Subject: [PATCH 3/3] chore: Adjust sequence (cherry picked from commit 88f3574c71a72b06724cd2f7ddca1e36e2ce4dde) --- src/Resizetizer/src/FileHelper.cs | 7 ++++--- src/Resizetizer/src/GeneratePackageAppxManifest.cs | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Resizetizer/src/FileHelper.cs b/src/Resizetizer/src/FileHelper.cs index f44ca452..baf21978 100644 --- a/src/Resizetizer/src/FileHelper.cs +++ b/src/Resizetizer/src/FileHelper.cs @@ -14,9 +14,10 @@ public static void WriteFileIfChanged(string fileName, TaskLoggingHelper log, Ac var tempFile = Path.GetTempFileName(); try { - using var writer = File.CreateText(tempFile); - - action(writer); + using (var writer = File.CreateText(tempFile)) + { + action(writer); + } if (!File.Exists(fileName) || !File.ReadAllText(fileName).Equals(File.ReadAllText(tempFile))) diff --git a/src/Resizetizer/src/GeneratePackageAppxManifest.cs b/src/Resizetizer/src/GeneratePackageAppxManifest.cs index 92263e32..78e899b1 100644 --- a/src/Resizetizer/src/GeneratePackageAppxManifest.cs +++ b/src/Resizetizer/src/GeneratePackageAppxManifest.cs @@ -70,7 +70,6 @@ public override bool Execute() Log, writer => { - var appx = XDocument.Load(AppxManifest[0].ItemSpec); UpdateManifest(appx);