-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathBuild.cs
87 lines (72 loc) · 3.44 KB
/
Build.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using JetBrains.Annotations;
using Nuke.Common;
using Nuke.Common.Execution;
using Nuke.Common.Git;
using Nuke.Common.IO;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.GitVersion;
using Nuke.Common.Tools.MSBuild;
using Nuke.Common.Tools.Npm;
using Rocket.Surgery.Nuke.DotNetCore;
namespace Build;
[PublicAPI]
[UnsetVisualStudioEnvironmentVariables]
[PackageIcon("http://www.omnisharp.net/images/logo.png")]
[EnsureReadmeIsUpdated]
[DotNetVerbosityMapping]
[MSBuildVerbosityMapping]
[NuGetVerbosityMapping]
[LocalBuildConventions]
public sealed partial class Solution : NukeBuild,
ICanRestoreWithDotNetCore,
ICanBuildWithDotNetCore,
ICanTestWithDotNetCore,
ICanPackWithDotNetCore,
IHaveDataCollector,
ICanClean,
ICanUpdateReadme,
IGenerateCodeCoverageReport,
IGenerateCodeCoverageSummary,
IGenerateCodeCoverageBadges,
IGenerateDocFx,
IHaveConfiguration<Configuration>
{
/// <summary>
/// Support plugins are available for:
/// - JetBrains ReSharper https://nuke.build/resharper
/// - JetBrains Rider https://nuke.build/rider
/// - Microsoft VisualStudio https://nuke.build/visualstudio
/// - Microsoft VSCode https://nuke.build/vscode
/// </summary>
public static int Main() => Execute<Solution>(x => x.Default);
[OptionalGitRepository] public GitRepository? GitRepository { get; }
private Target Default => _ => _
.DependsOn(Restore)
.DependsOn(Build)
.DependsOn(Test)
.DependsOn(Pack);
public Target Build => _ => _.Inherit<ICanBuildWithDotNetCore>(x => x.CoreBuild);
public Target Pack => _ => _.Inherit<ICanPackWithDotNetCore>(x => x.CorePack)
.DependsOn(Clean);
[ComputedGitVersion] public GitVersion GitVersion { get; } = null!;
public Target Clean => _ => _.Inherit<ICanClean>(x => x.Clean);
public Target Restore => _ => _.Inherit<ICanRestoreWithDotNetCore>(x => x.CoreRestore);
public Target Test => _ => _.Inherit<ICanTestWithDotNetCore>(x => x.CoreTest);
public Target NpmInstall => _ => _
.Executes(() =>
NpmTasks.NpmCi(s => s
.SetProcessWorkingDirectory(VscodeTestExtensionProjectDirectory)));
public Target TestVscodeExtension => _ => _
.DependsOn(NpmInstall)
.Executes(() =>
NpmTasks.NpmRun(s => s
.SetProcessWorkingDirectory(VscodeTestExtensionProjectDirectory)
.SetCommand("test")));
public Target BuildVersion => _ => _.Inherit<IHaveBuildVersion>(x => x.BuildVersion)
.Before(Default)
.Before(Clean);
[Parameter("Configuration to build")] public Configuration Configuration { get; } = IsLocalBuild ? Configuration.Debug : Configuration.Release;
AbsolutePath ICanUpdateReadme.ReadmeFilePath => RootDirectory / "README.md";
internal const string VscodeTestExtensionProjectDirectory = "vscode-testextension";
}