Skip to content

Commit 12754d8

Browse files
authored
Write intermediate file only if different (#87)
* Write intermediate file only if different Fixed #86 * Update DeclaredReferences.cs * Update DeclaredReferences.cs * NL
1 parent ca6eb09 commit 12754d8

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

src/Shared/DeclaredReferences.cs

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace ReferenceTrimmer.Shared;
1+
using System.Text;
2+
3+
namespace ReferenceTrimmer.Shared;
24

35
internal record DeclaredReferences(IReadOnlyList<DeclaredReference> References)
46
{
@@ -22,18 +24,28 @@ internal record DeclaredReferences(IReadOnlyList<DeclaredReference> References)
2224

2325
public void SaveToFile(string filePath)
2426
{
25-
using FileStream stream = File.Create(filePath);
26-
using StreamWriter writer = new(stream);
27-
27+
StringBuilder writer = new();
2828
foreach (DeclaredReference reference in References)
2929
{
30-
writer.Write(reference.AssemblyPath);
31-
writer.Write(FieldDelimiter);
32-
writer.Write(KindEnumToString[reference.Kind]);
33-
writer.Write(FieldDelimiter);
34-
writer.Write(reference.Spec);
35-
writer.WriteLine();
30+
writer.Append(reference.AssemblyPath);
31+
writer.Append(FieldDelimiter);
32+
writer.Append(KindEnumToString[reference.Kind]);
33+
writer.Append(FieldDelimiter);
34+
writer.Append(reference.Spec);
35+
writer.AppendLine();
36+
}
37+
38+
string newContent = writer.ToString();
39+
if (File.Exists(filePath))
40+
{
41+
string existing = File.ReadAllText(filePath);
42+
if (string.Equals(existing, newContent, StringComparison.OrdinalIgnoreCase))
43+
{
44+
return;
45+
}
3646
}
47+
48+
File.WriteAllText(filePath, newContent);
3749
}
3850

3951
public static DeclaredReferences ReadFromFile(string filePath)

0 commit comments

Comments
 (0)