Skip to content

Commit c067b3c

Browse files
authored
Some small enhancements for cake based builds (#73)
1 parent 4e4e4a3 commit c067b3c

8 files changed

Lines changed: 57 additions & 11 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
using Cake.Core.IO;
3+
4+
namespace CreativeCoders.CakeBuild;
5+
6+
public static class DirectoryPathExtensions
7+
{
8+
[SuppressMessage("ReSharper", "LoopCanBeConvertedToQuery")]
9+
public static DirectoryPath Combine(this DirectoryPath path, params string[] segments)
10+
{
11+
foreach (var segment in segments)
12+
{
13+
path = path.Combine(segment);
14+
}
15+
16+
return path;
17+
}
18+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
using JetBrains.Annotations;
3+
4+
namespace CreativeCoders.CakeBuild;
5+
6+
[ExcludeFromCodeCoverage]
7+
[PublicAPI]
8+
public static class DotNetRuntime
9+
{
10+
public const string WinX64 = "win-x64";
11+
12+
public const string WinX86 = "win-x86";
13+
14+
public const string WinArm64 = "win-arm64";
15+
16+
public const string WinArm = "win-arm";
17+
18+
public const string LinuxX64 = "linux-x64";
19+
20+
public const string LinuxMuslX64 = "linux-x64";
21+
22+
public const string LinuxArm64 = "linux-arm64";
23+
24+
public const string LinuxArm = "linux-arm";
25+
26+
public const string MacOsX64 = "osx-x64";
27+
}

source/CakeBuild/CreativeCoders.CakeBuild/Tasks/Templates/NuGetPushTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ protected override Task RunAsyncCore(T context, INuGetPushTaskSettings taskSetti
1818

1919
var packSettings = context.GetRequiredSettings<IPackTaskSettings>();
2020

21-
var filePath = packSettings.OutputDirectory.GetFilePath("*.nupkg");
21+
var filePath = packSettings.PackOutputDirectory.GetFilePath("*.nupkg");
2222

2323
context.DotNetNuGetPush(filePath, CreateNuGetPushSettings(taskSettings));
2424

source/CakeBuild/CreativeCoders.CakeBuild/Tasks/Templates/PackTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ private DotNetPackSettings CreateDotNetPackSettings(T context, IPackTaskSettings
1919
{
2020
var dotNetPackSettings = new DotNetPackSettings
2121
{
22-
OutputDirectory = packSettings.OutputDirectory,
22+
OutputDirectory = packSettings.PackOutputDirectory,
2323
Configuration = context.BuildConfiguration,
2424
NoBuild = context.HasExecutedTask(typeof(BuildTask<T>)),
2525
IncludeSymbols = true,

source/CakeBuild/CreativeCoders.CakeBuild/Tasks/Templates/PublishTask.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ protected override Task RunAsyncCore(TBuildContext context, IPublishTaskSettings
1616
foreach (var publishingItem in taskSettings.PublishingItems)
1717
{
1818
context.DotNetPublish(publishingItem.ProjectPath.FullPath,
19-
CreateDotNetPublishSettings(publishingItem, context));
19+
CreateDotNetPublishSettings(taskSettings, publishingItem, context));
2020
}
2121
}
2222
else
@@ -28,7 +28,7 @@ protected override Task RunAsyncCore(TBuildContext context, IPublishTaskSettings
2828
return Task.CompletedTask;
2929
}
3030

31-
private DotNetPublishSettings CreateDotNetPublishSettings(IPublishTaskSettings publishSettings,
31+
private static DotNetPublishSettings CreateDotNetPublishSettings(IPublishTaskSettings publishSettings,
3232
TBuildContext context)
3333
{
3434
var dotNetPublishSettings = new DotNetPublishSettings
@@ -41,15 +41,16 @@ private DotNetPublishSettings CreateDotNetPublishSettings(IPublishTaskSettings p
4141
return dotNetPublishSettings;
4242
}
4343

44-
protected virtual DotNetPublishSettings CreateDotNetPublishSettings(PublishingItem publishingItem,
45-
TBuildContext context)
44+
protected virtual DotNetPublishSettings CreateDotNetPublishSettings(IPublishTaskSettings publishSettings,
45+
PublishingItem publishingItem, TBuildContext context)
4646
{
4747
var dotNetPublishSettings = new DotNetPublishSettings
4848
{
4949
Runtime = publishingItem.Runtime,
50-
OutputDirectory = publishingItem.OutputDir,
50+
OutputDirectory = publishingItem.OutputDir.IsRelative
51+
? publishSettings.PublishOutputDir.Combine(publishingItem.OutputDir)
52+
: publishingItem.OutputDir,
5153
SelfContained = publishingItem.SelfContained,
52-
NoBuild = context.HasExecutedTask(typeof(BuildTask<TBuildContext>)),
5354
Configuration = context.BuildConfiguration
5455
};
5556

source/CakeBuild/CreativeCoders.CakeBuild/Tasks/Templates/Settings/IPackTaskSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CreativeCoders.CakeBuild.Tasks.Templates.Settings;
55
[CakeTaskSettings]
66
public interface IPackTaskSettings : IBuildContextAccessor
77
{
8-
DirectoryPath OutputDirectory => Context.ArtifactsDir.Combine("nuget");
8+
DirectoryPath PackOutputDirectory => Context.ArtifactsDir.Combine("nuget");
99

1010
string Copyright => string.Empty;
1111

source/CakeBuild/CreativeCoders.CakeBuild/Tasks/Templates/Settings/IPublishTaskSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace CreativeCoders.CakeBuild.Tasks.Templates.Settings;
44

55
public interface IPublishTaskSettings : IBuildContextAccessor
66
{
7-
DirectoryPath PublishOutputDir => Context.ArtifactsDir.Combine("dist");
7+
DirectoryPath PublishOutputDir => Context.ArtifactsDir.Combine("published");
88

99
IEnumerable<PublishingItem> PublishingItems => [];
1010
}

tests/CreativeCoders.CakeBuild.Tests/Tasks/Templates/NuGetPushTaskTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ private class TestNuGetPushBuildContext(Cake.Core.ICakeContext context)
1414
{
1515
public bool SkipPush { get; set; }
1616

17-
public DirectoryPath OutputDirectory => new("/repo/dist");
17+
public DirectoryPath PackOutputDirectory => new("/repo/dist");
1818
}
1919

2020
[Fact]

0 commit comments

Comments
 (0)