Skip to content

Commit 8eadfce

Browse files
committed
Do not overwrite Dockerfile if unchanged.
1 parent 5bc0385 commit 8eadfce

File tree

10 files changed

+17
-14
lines changed

10 files changed

+17
-14
lines changed

src/PostSharp.Engineering.BuildTools/Docker/AzureCliComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class AzureCliComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.AzureCli;
1212

13-
public override void WriteDockerfile( StreamWriter writer )
13+
public override void WriteDockerfile( TextWriter writer )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/ContainerComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public abstract class ContainerComponent : IComparable<ContainerComponent>
1313

1414
public abstract ContainerComponentKind Kind { get; }
1515

16-
public abstract void WriteDockerfile( StreamWriter writer );
16+
public abstract void WriteDockerfile( TextWriter writer );
1717

1818
public virtual void AddRequirements( IReadOnlyList<ContainerComponent> components, Action<ContainerComponent> add ) { }
1919

src/PostSharp.Engineering.BuildTools/Docker/ContainerRequirements.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using JetBrains.Annotations;
44
using PostSharp.Engineering.BuildTools.Build;
55
using PostSharp.Engineering.BuildTools.ContinuousIntegration.Model;
6+
using PostSharp.Engineering.BuildTools.Utilities;
67
using System;
78
using System.Collections.Generic;
89
using System.IO;
@@ -66,22 +67,24 @@ void Add( ContainerComponent c )
6667

6768
var dockerfilePath = Path.Combine( context.RepoDirectory, "Dockerfile" );
6869
context.Console.WriteMessage( $"Writing '{dockerfilePath}'." );
69-
using var dockerfile = File.CreateText( dockerfilePath );
70+
using var dockerfileContent = new StringWriter();
7071

7172
foreach ( var component in orderedComponents )
7273
{
7374
context.Console.WriteMessage( $"Processing container component '{component.Name}'." );
7475

7576
if ( component.Kind != ContainerComponentKind.Prolog )
7677
{
77-
dockerfile.WriteLine();
78-
dockerfile.WriteLine();
79-
dockerfile.WriteLine( $"# {component.Name}" );
78+
dockerfileContent.WriteLine();
79+
dockerfileContent.WriteLine();
80+
dockerfileContent.WriteLine( $"# {component.Name}" );
8081
}
8182

8283
component.PopulateContextDirectory( context, contextDirectory );
83-
component.WriteDockerfile( dockerfile );
84+
component.WriteDockerfile( dockerfileContent );
8485
}
86+
87+
TextFileHelper.WriteIfDifferent( dockerfilePath, dockerfileContent.ToString(), context );
8588

8689
return true;
8790
}

src/PostSharp.Engineering.BuildTools/Docker/DotNetComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public override void AddRequirements( IReadOnlyList<ContainerComponent> componen
4444
}
4545
}
4646

47-
public override void WriteDockerfile( StreamWriter writer )
47+
public override void WriteDockerfile( TextWriter writer )
4848
{
4949
if ( this.DotNetComponentKind == DotNetComponentKind.Sdk )
5050
{

src/PostSharp.Engineering.BuildTools/Docker/DotNetInstallerComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class DotNetInstallerComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.DotNetInstaller;
1212

13-
public override void WriteDockerfile( StreamWriter writer )
13+
public override void WriteDockerfile( TextWriter writer )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/EpilogueComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class EpilogueComponent : ContainerComponent
1212

1313
public override ContainerComponentKind Kind => ContainerComponentKind.Epilogue;
1414

15-
public override void WriteDockerfile( StreamWriter writer )
15+
public override void WriteDockerfile( TextWriter writer )
1616
{
1717
writer.WriteLine(
1818
"""

src/PostSharp.Engineering.BuildTools/Docker/GitComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class GitComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.Git;
1212

13-
public override void WriteDockerfile( StreamWriter writer )
13+
public override void WriteDockerfile( TextWriter writer )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/PowershellComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class PowershellComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.Powershell;
1212

13-
public override void WriteDockerfile( StreamWriter writer )
13+
public override void WriteDockerfile( TextWriter writer )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/PrologComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class PrologComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.Prolog;
1212

13-
public override void WriteDockerfile( StreamWriter writer )
13+
public override void WriteDockerfile( TextWriter writer )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/VisualStudioBuildToolsComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public VisualStudioBuildToolsComponent( string[] vsComponents )
2424
this._vsComponents = vsComponents;
2525
}
2626

27-
public override void WriteDockerfile( StreamWriter writer )
27+
public override void WriteDockerfile( TextWriter writer )
2828
{
2929
var components = string.Join( ", ", this._vsComponents.Select( x => $"\"--add\", \"{x}\"" ) );
3030

0 commit comments

Comments
 (0)