-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGenerateLicenseFileTask.cs
59 lines (51 loc) · 1.82 KB
/
GenerateLicenseFileTask.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using Cake.Common;
using Cake.Core;
using Cake.Core.IO;
using Cake.Frosting;
namespace Build
{
[TaskName("GenerateLicenseFile")]
public sealed class GenerateLicenseFileTask : FrostingTask<BuildContext>
{
private const string DotnetToolName = "dotnet-project-licenses";
private const string DotnetToolVersion = "2.5.0";
public override void Run(BuildContext context)
{
Install();
Run();
Uninstall();
void Install()
{
var settings = new ProcessSettings()
.UseWorkingDirectory(".")
.WithArguments(builder => builder
.Append($"tool install --global {DotnetToolName} --version {DotnetToolVersion}")
);
context.StartProcess("dotnet", settings);
}
void Uninstall()
{
var settings = new ProcessSettings()
.UseWorkingDirectory(".")
.WithArguments(builder => builder
.Append($"tool uninstall --global {DotnetToolName} ")
);
context.StartProcess("dotnet", settings);
}
void Run()
{
foreach (var project in context.Projects)
{
var settings = new ProcessSettings()
.UseWorkingDirectory(".")
.WithArguments(builder => builder
.AppendSwitchQuoted("-i", project.ProjectDirectory.FullPath)
.Append("-j")
.AppendSwitchQuoted("-f", project.ProjectDirectory.FullPath)
);
context.StartProcess(DotnetToolName, settings);
}
}
}
}
}