Skip to content

Commit e69d8bb

Browse files
committed
fix(incremental): Don't write files that have not changed
1 parent a4df203 commit e69d8bb

4 files changed

+66
-17
lines changed

src/Resizetizer/src/CreatePartialInfoPlistTask.cs

+13-10
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,21 @@ public override bool Execute()
3434

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

37-
using (var f = File.CreateText(plistFilename))
38-
{
39-
f.WriteLine(plistHeader);
40-
41-
if (!string.IsNullOrEmpty(Storyboard))
37+
FileHelper.WriteFileIfChanged(
38+
plistFilename,
39+
Log,
40+
writer =>
4241
{
43-
f.WriteLine(" <key>UILaunchStoryboardName</key>");
44-
f.WriteLine($" <string>{Path.GetFileNameWithoutExtension(Storyboard)}</string>");
45-
}
42+
writer.WriteLine(plistHeader);
43+
44+
if (!string.IsNullOrEmpty(Storyboard))
45+
{
46+
writer.WriteLine(" <key>UILaunchStoryboardName</key>");
47+
writer.WriteLine($" <string>{Path.GetFileNameWithoutExtension(Storyboard)}</string>");
48+
}
4649

47-
f.WriteLine(plistFooter);
48-
}
50+
writer.WriteLine(plistFooter);
51+
});
4952
}
5053
catch (Exception ex)
5154
{

src/Resizetizer/src/FileHelper.cs

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using Microsoft.Build.Framework;
2+
using Microsoft.Build.Utilities;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.IO;
6+
using System.Text;
7+
8+
namespace Uno.Resizetizer
9+
{
10+
internal class FileHelper
11+
{
12+
public static void WriteFileIfChanged(string fileName, TaskLoggingHelper log, Action<StreamWriter> action)
13+
{
14+
var tempFile = Path.GetTempFileName();
15+
try
16+
{
17+
using var writer = File.CreateText(tempFile);
18+
19+
action(writer);
20+
21+
if (!File.Exists(fileName)
22+
|| !File.ReadAllText(fileName).Equals(File.ReadAllText(tempFile)))
23+
{
24+
File.Move(tempFile, fileName);
25+
}
26+
else
27+
{
28+
log.LogMessage(MessageImportance.Low, $"Skipping unchanged {fileName}");
29+
}
30+
31+
}
32+
finally
33+
{
34+
try
35+
{
36+
File.Delete(tempFile);
37+
}
38+
catch
39+
{
40+
// ignore errors
41+
}
42+
}
43+
}
44+
}
45+
}

src/Resizetizer/src/GenerateSplashStoryboard.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ public override bool Execute()
4343
var dir = Path.GetDirectoryName(OutputFile);
4444
Directory.CreateDirectory(dir);
4545

46-
using (var writer = File.CreateText(OutputFile))
47-
{
48-
SubstituteStoryboard(writer, image, rStr, gStr, bStr, aStr);
49-
}
46+
FileHelper.WriteFileIfChanged(
47+
OutputFile,
48+
Log,
49+
writer => SubstituteStoryboard(writer, image, rStr, gStr, bStr, aStr));
5050

5151
return !Log.HasLoggedErrors;
5252
}

src/Resizetizer/src/GenerateWasmSplashAssets.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,10 @@ public override bool Execute()
6363
var dir = Path.GetDirectoryName(OutputFile);
6464
Directory.CreateDirectory(dir);
6565

66-
using var writer = File.CreateText(OutputFile);
67-
68-
ProcessAppManifestFile(UserAppManifest.ToString(), info, writer);
66+
FileHelper.WriteFileIfChanged(
67+
OutputFile,
68+
Log,
69+
writer => ProcessAppManifestFile(UserAppManifest.ToString(), info, writer));
6970

7071
return true;
7172
}

0 commit comments

Comments
 (0)