Nuke.Cola
Loading...
Searching...
No Matches
ToolExResolver.cs
1using Nuke.Common;
2using Nuke.Common.Tooling;
3
4namespace Nuke.Cola.Tooling;
5
6public class ToolExResolver
7{
8 public static ToolEx GetTool(string toolPath)
9 {
10 Assert.FileExists(toolPath);
11 return new ToolExExecutor(toolPath).Execute;
12 }
13
14 public static ToolEx GetNuGetTool(string packageId, string packageExecutable, string? version = null, string? framework = null)
15 {
16 var toolPath = NuGetToolPathResolver.GetPackageExecutable(packageId, packageExecutable, version, framework);
17 return GetTool(toolPath);
18 }
19
20 public static ToolEx GetNpmTool(string npmExecutable)
21 {
22 var toolPath = NpmToolPathResolver.GetNpmExecutable(npmExecutable);
23 return GetTool(toolPath);
24 }
25
26 public static ToolEx? TryGetEnvironmentTool(string name)
27 {
28 var toolPath = ToolPathResolver.TryGetEnvironmentExecutable($"{name.ToUpperInvariant()}_EXE");
29 if (toolPath == null)
30 return null;
31
32 return GetTool(toolPath);
33 }
34
35 public static ToolEx GetPathTool(string name)
36 {
37 var toolPath = ToolPathResolver.GetPathExecutable(name);
38 return GetTool(toolPath);
39 }
40
41 public static ToolEx GetEnvironmentOrPathTool(string name)
42 {
43 return TryGetEnvironmentTool(name) ?? GetPathTool(name);
44 }
45}
delegate? IReadOnlyCollection< Output > ToolEx(ArgumentStringHandler arguments=default, string? workingDirectory=null, IReadOnlyDictionary< string, string >? environmentVariables=null, int? timeout=null, bool? logOutput=null, bool? logInvocation=null, Action< OutputType, string >? logger=null, Action< IProcess >? exitHandler=null, Action< StreamWriter >? input=null, Encoding? standardOutputEncoding=null, Encoding? standardInputEncoding=null)
Extended copy of Tool delegate of Nuke.