Skip to content

Commit a3bf796

Browse files
committed
(build) set the working directory in the repository root
1 parent 720ae43 commit a3bf796

File tree

19 files changed

+33
-21
lines changed

19 files changed

+33
-21
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,5 @@ config.wyam.packages.xml
128128
/tests/integration/full/build
129129

130130
run/
131+
132+
build/build/tools/

build/artifacts/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using Artifacts;
22
using Cake.Frosting;
3-
using Common.Utilities;
43

54
return new CakeHost()
65
.UseContext<BuildContext>()
76
.UseStartup<Startup>()
8-
.SetToolPath(Paths.ToolsDirectory)
97
.Run(args);

build/artifacts/Startup.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using Cake.Frosting;
33
using Common.Lifetime;
4+
using Common.Utilities;
45
using Microsoft.Extensions.DependencyInjection;
56

67
namespace Artifacts
@@ -12,6 +13,8 @@ public void Configure(IServiceCollection services)
1213
services.UseLifetime<BuildLifetime>();
1314
services.UseTaskLifetime<BuildTaskLifetime>();
1415

16+
services.UseWorkingDirectory(Extensions.GetRootDirectory());
17+
1518
services.UseTool(new Uri("dotnet:?package=GitVersion.Tool&version=5.6.11"));
1619
}
1720
}

build/build/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using Build;
22
using Cake.Frosting;
3-
using Common.Utilities;
43

54
return new CakeHost()
65
.UseContext<BuildContext>()
76
.UseStartup<Startup>()
8-
.SetToolPath(Paths.ToolsDirectory)
97
.Run(args);

build/build/Startup.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
2+
using Cake.Core.IO;
23
using Cake.Frosting;
34
using Common.Lifetime;
5+
using Common.Utilities;
46
using Microsoft.Extensions.DependencyInjection;
57

68
namespace Build
@@ -12,6 +14,8 @@ public void Configure(IServiceCollection services)
1214
services.UseLifetime<BuildLifetime>();
1315
services.UseTaskLifetime<BuildTaskLifetime>();
1416

17+
services.UseWorkingDirectory(Extensions.GetRootDirectory());
18+
1519
services.UseTool(new Uri("dotnet:?package=Codecov.Tool&version=1.13.0"));
1620
services.UseTool(new Uri("dotnet:?package=dotnet-format&version=5.0.211103"));
1721
services.UseTool(new Uri("dotnet:?package=GitVersion.Tool&version=5.6.11"));

build/chores/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using Cake.Frosting;
22
using Chores;
3-
using Common.Utilities;
43

54
return new CakeHost()
65
.UseContext<BuildContext>()
76
.UseStartup<Startup>()
8-
.SetToolPath(Paths.ToolsDirectory)
97
.Run(args);

build/chores/Tasks/ToolsInstall.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Linq;
2-
using Cake.Common.Tools.DotNetCore;
32
using Cake.Frosting;
43
using Cake.Json;
5-
using Common.Utilities;
64
using Newtonsoft.Json.Linq;
75

86
namespace Chores.Tasks
@@ -20,7 +18,7 @@ public override void Run(BuildContext context)
2018
var tools = jToken.Select(x => (JProperty)x).ToDictionary(x => x.Name, x => x.Value["version"]?.Value<string>());
2119
foreach (var (toolName, version) in tools)
2220
{
23-
context.DotNetCoreTool($"tool update --tool-path {Paths.ToolsDirectory} --version {version} {toolName}");
21+
// context.DotNetCoreTool($"tool update --tool-path {context.Configuration.GetToolPath()} --version {version} {toolName}");
2422
}
2523
}
2624
}

build/common/Utilities/Extensions.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Linq;
45
using System.Reflection;
56
using Cake.Core.IO;
@@ -77,6 +78,15 @@ public static IEnumerable<string> GetDockerTagsForRepository(this BuildContextBa
7778

7879
public static DirectoryPath Combine(this string path, string segment) => DirectoryPath.FromString(path).Combine(segment);
7980
public static FilePath CombineWithFilePath(this string path, string segment) => DirectoryPath.FromString(path).CombineWithFilePath(segment);
80-
}
81+
public static DirectoryPath GetRootDirectory()
82+
{
83+
var currentPath = DirectoryPath.FromString(Directory.GetCurrentDirectory());
84+
while (!Directory.Exists(currentPath.Combine(".git").FullPath))
85+
{
86+
currentPath = DirectoryPath.FromString(Directory.GetParent(currentPath.FullPath)?.FullName);
87+
}
8188

89+
return currentPath;
90+
}
91+
}
8292
}

build/common/Utilities/Paths.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ public class Paths
66
{
77
public static readonly DirectoryPath Root = "./";
88

9-
public static readonly DirectoryPath ToolsDirectory = Root.Combine("tools");
109
public static readonly DirectoryPath Artifacts = Root.Combine("artifacts");
1110
public static readonly DirectoryPath Src = Root.Combine("src");
1211
public static readonly DirectoryPath Docs = Root.Combine("docs");

build/docker/BuildLifetime.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Cake.Common.Diagnostics;
44
using Cake.Docker;
55
using Common.Utilities;
6-
using Docker.Utilities;
76
using Constants = Common.Utilities.Constants;
87

98
namespace Docker

0 commit comments

Comments
 (0)