Skip to content

Commit 11496c5

Browse files
committed
Using nuke.build as our build system now
1 parent 52023e0 commit 11496c5

12 files changed

+360
-55
lines changed

.build/.editorconfig

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[*.cs]
2+
dotnet_style_qualification_for_field = false:warning
3+
dotnet_style_qualification_for_property = false:warning
4+
dotnet_style_qualification_for_method = false:warning
5+
dotnet_style_qualification_for_event = false:warning
6+
dotnet_style_require_accessibility_modifiers = never:warning
7+
8+
csharp_style_expression_bodied_properties = true:warning
9+
csharp_style_expression_bodied_indexers = true:warning
10+
csharp_style_expression_bodied_accessors = true:warning

.build/Build.cs

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
using System;
2+
using System.Linq;
3+
using Nuke.Common;
4+
using Nuke.Common.Execution;
5+
using Nuke.Common.Git;
6+
using Nuke.Common.IO;
7+
using Nuke.Common.ProjectModel;
8+
using Nuke.Common.Tooling;
9+
using Nuke.Common.Tools.DotNet;
10+
using Nuke.Common.Tools.GitVersion;
11+
using Nuke.Common.Tools.NuGet;
12+
using Nuke.Common.Utilities.Collections;
13+
using static Nuke.Common.EnvironmentInfo;
14+
using static Nuke.Common.IO.FileSystemTasks;
15+
using static Nuke.Common.IO.PathConstruction;
16+
using static Nuke.Common.Tools.DotNet.DotNetTasks;
17+
18+
[CheckBuildProjectConfigurations]
19+
[UnsetVisualStudioEnvironmentVariables]
20+
class Build : NukeBuild
21+
{
22+
/// Support plugins are available for:
23+
/// - JetBrains ReSharper https://nuke.build/resharper
24+
/// - JetBrains Rider https://nuke.build/rider
25+
/// - Microsoft VisualStudio https://nuke.build/visualstudio
26+
/// - Microsoft VSCode https://nuke.build/vscode
27+
28+
public static int Main () => Execute<Build>(x => x.Compile);
29+
30+
protected override void OnBuildInitialized()
31+
{
32+
base.OnBuildInitialized();
33+
34+
ProcessTasks.DefaultLogInvocation = true;
35+
ProcessTasks.DefaultLogOutput = true;
36+
}
37+
38+
[Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
39+
readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
40+
41+
[Solution] readonly Solution Solution;
42+
[GitRepository] readonly GitRepository GitRepository;
43+
[GitVersion] readonly GitVersion GitVersion;
44+
45+
AbsolutePath BuildBinDirectory => RootDirectory / "bin";
46+
47+
AbsolutePath CurrentBuildOutputDirectory => BuildBinDirectory / Configuration;
48+
49+
AbsolutePath IntermediateOutputDirectory => RootDirectory / "";
50+
51+
AbsolutePath OutputDirectory => RootDirectory / "output";
52+
53+
AbsolutePath ChocolateyDirectory => RootDirectory / "chocolatey";
54+
55+
AbsolutePath PaketDirectory => RootDirectory / ".paket";
56+
57+
AbsolutePath PackagesDirectory => RootDirectory / "packages";
58+
59+
AbsolutePath WixDirectory => PackagesDirectory / "wix/tools";
60+
61+
Target Versions => _ => _
62+
.Before()
63+
.Executes(() =>
64+
{
65+
Console.WriteLine("Informational Version: {0}", GitVersion.InformationalVersion);
66+
Console.WriteLine("SemVer Version: {0}", GitVersion.SemVer);
67+
Console.WriteLine("AssemblySemVer Version: {0}", GitVersion.AssemblySemVer);
68+
Console.WriteLine("MajorMinorPatch Version: {0}", GitVersion.MajorMinorPatch);
69+
Console.WriteLine("NuGet Version: {0}", GitVersion.NuGetVersion);
70+
});
71+
72+
Target Clean => _ => _
73+
.DependsOn(CleanOutput)
74+
.Executes(() =>
75+
{
76+
EnsureCleanDirectory(OutputDirectory);
77+
});
78+
79+
Target CleanOutput => _ => _
80+
.Executes(() =>
81+
{
82+
EnsureCleanDirectory(OutputDirectory);
83+
});
84+
85+
Target Restore => _ => _
86+
.Executes(() =>
87+
{
88+
ProcessTasks.StartProcess(PaketDirectory / "paket.exe", "restore");
89+
90+
DotNetRestore(s => s
91+
.SetProjectFile(Solution));
92+
});
93+
94+
Target Compile => _ => _
95+
.DependsOn(Restore)
96+
.Executes(() =>
97+
{
98+
DotNetBuild(s => s
99+
.SetProjectFile(Solution)
100+
.SetConfiguration(Configuration)
101+
.SetAssemblyVersion(GitVersion.GetNormalizedAssemblyVersion())
102+
.SetFileVersion(GitVersion.GetNormalizedFileVersion())
103+
.SetInformationalVersion(GitVersion.InformationalVersion)
104+
.EnableNoRestore());
105+
});
106+
107+
Target Pack => _ => _
108+
.DependsOn(CleanOutput)
109+
.Executes(() =>
110+
{
111+
// & $nuget pack "$(Join-Path $PSScriptRoot 'chocolatey\snoop.nuspec')" -Version $version -Properties Configuration=$Configuration -OutputDirectory "$outputDirectory" -NoPackageAnalysis
112+
NuGetTasks.NuGetPack(s => s
113+
.SetTargetPath(ChocolateyDirectory / "snoop.nuspec")
114+
.SetVersion(GitVersion.NuGetVersion)
115+
.SetConfiguration(Configuration)
116+
.SetOutputDirectory(OutputDirectory)
117+
.SetNoPackageAnalysis(true));
118+
119+
var tempDirectory = TemporaryDirectory / "XX";
120+
121+
var nupkgs = OutputDirectory.GlobFiles("*.nupkg");
122+
123+
CompressionTasks.UncompressZip(nupkgs.First(), tempDirectory);
124+
125+
CompressionTasks.Compress(tempDirectory / "tools", OutputDirectory / $"snoop.{GitVersion.NuGetVersion}.zip", info => info.Name.Contains("chocolatey") == false && info.Name != "VERIFICATION.txt");
126+
});
127+
128+
Target Setup => _ => _
129+
.Executes(() =>
130+
{
131+
ProcessTasks.StartProcess(WixDirectory / "candle.exe",
132+
$"snoop.wxs -ext WixUIExtension -o \"{OutputDirectory / "Snoop.wixobj"}\" -dProductVersion=\"{GitVersion.MajorMinorPatch}\" -nologo")
133+
.WaitForExit();
134+
135+
ProcessTasks.StartProcess(WixDirectory / "light.exe",
136+
$"-out \"{OutputDirectory / $"Snoop.{GitVersion.NuGetVersion}.msi"}\" -b \"{CurrentBuildOutputDirectory}\" \"{OutputDirectory / "Snoop.wixobj"}\" -ext WixUIExtension -dProductVersion=\"{GitVersion.MajorMinorPatch}\" -pdbout \"{OutputDirectory / "Snoop.wixpdb"}\" -nologo -sice:ICE61")
137+
.WaitForExit();
138+
});
139+
140+
Target CI => _ => _
141+
.DependsOn(Clean, Compile, Pack, Setup);
142+
}

.build/Directory.build.props

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<Project>
2+
</Project>

.build/_build.csproj

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
7+
<RootNamespace></RootNamespace>
8+
<IsPackable>False</IsPackable>
9+
<NoWarn>CS0649;CS0169</NoWarn>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="Nuke.Common" Version="0.20.1" />
14+
<PackageReference Include="GitVersion.CommandLine.DotNetCore" Version="4.0.1-beta1-49" />
15+
<PackageReference Include="Nuget.CommandLine" Version="5.*" />
16+
</ItemGroup>
17+
18+
<ItemGroup>
19+
<NukeSpecificationFiles Include="**\*.json" Exclude="bin\**;obj\**" />
20+
<NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
21+
<None Remove="*.csproj.DotSettings;*.ref.*.txt" />
22+
23+
<!-- Common build related files -->
24+
<None Include="..\build.ps1" />
25+
<None Include="..\build.sh" />
26+
<None Include="..\.nuke" />
27+
<None Include="..\global.json" Condition="Exists('..\global.json')" />
28+
<None Include="..\nuget.config" Condition="Exists('..\nuget.config')" />
29+
<None Include="..\azure-pipelines.yml" Condition="Exists('..\azure-pipelines.yml')" />
30+
<None Include="..\Jenkinsfile" Condition="Exists('..\Jenkinsfile')" />
31+
<None Include="..\appveyor.yml" Condition="Exists('..\appveyor.yml')" />
32+
<None Include="..\.travis.yml" Condition="Exists('..\.travis.yml')" />
33+
<None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" />
34+
</ItemGroup>
35+
36+
</Project>

.build/_build.csproj.DotSettings

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:Boolean x:Key="/Default/CodeInspection/ImplicitNullability/EnableFields/@EntryValue">False</s:Boolean>
3+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/DEFAULT_INTERNAL_MODIFIER/@EntryValue">Implicit</s:String>
4+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/DEFAULT_PRIVATE_MODIFIER/@EntryValue">Implicit</s:String>
5+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/METHOD_OR_OPERATOR_BODY/@EntryValue">ExpressionBody</s:String>
6+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/ThisQualifier/INSTANCE_MEMBERS_QUALIFY_MEMBERS/@EntryValue">0</s:String>
7+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
8+
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_USER_LINEBREAKS/@EntryValue">True</s:Boolean>
9+
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_AFTER_INVOCATION_LPAR/@EntryValue">False</s:Boolean>
10+
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/MAX_ATTRIBUTE_LENGTH_FOR_SAME_LINE/@EntryValue">120</s:Int64>
11+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">IF_OWNER_IS_SINGLE_LINE</s:String>
12+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_ARGUMENTS_STYLE/@EntryValue">WRAP_IF_LONG</s:String>
13+
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ANONYMOUSMETHOD_ON_SINGLE_LINE/@EntryValue">False</s:Boolean>
14+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
15+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
16+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
17+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
18+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
19+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
20+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
21+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
22+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
23+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
24+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ Build/
22
Intermediate/
33
bin/
44
obj/
5+
output/
56
Debug/
67
Release/
78
packages/
89
paket-files/
10+
.tmp/
911
*.vs
1012
*.user
1113
*.opensdf

.nuke

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Snoop.sln

GitVersion.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
assembly-versioning-scheme: Major
2+
assembly-file-versioning-scheme: MajorMinorPatchTag
3+
mode: ContinuousDeployment
4+
next-version: 3.0.0
5+
branches:
6+
master:
7+
mode: ContinuousDeployment
8+
tag: rc
9+
prevent-increment-of-merged-branch-version: true
10+
track-merge-target: false
11+
is-release-branch: true
12+
develop:
13+
mode: ContinuousDeployment
14+
tag: alpha
15+
prevent-increment-of-merged-branch-version: true
16+
track-merge-target: true
17+
pull-request:
18+
mode: ContinuousDelivery
19+
ignore:
20+
sha: []

Snoop.sln

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Microsoft Visual Studio Solution File, Format Version 12.00
1+
Microsoft Visual Studio Solution File, Format Version 12.00
22
# Visual Studio Version 16
33
VisualStudioVersion = 16.0.28803.202
44
MinimumVisualStudioVersion = 10.0.40219.1
@@ -21,12 +21,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
2121
EndProject
2222
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Snoop.Core", "Snoop.Core\Snoop.Core.csproj", "{883A18A9-A386-4342-AC95-9AFC34913FCA}"
2323
EndProject
24+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", ".build\_build.csproj", "{2CB98C17-949D-47AA-880E-13D4DC6DFBFA}"
25+
EndProject
2426
Global
2527
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2628
Debug|Any CPU = Debug|Any CPU
2729
Release|Any CPU = Release|Any CPU
2830
EndGlobalSection
2931
GlobalSection(ProjectConfigurationPlatforms) = postSolution
32+
{2CB98C17-949D-47AA-880E-13D4DC6DFBFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33+
{2CB98C17-949D-47AA-880E-13D4DC6DFBFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
3034
{ACA9A018-ABF3-4C60-995F-99C4777CED71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3135
{ACA9A018-ABF3-4C60-995F-99C4777CED71}.Debug|Any CPU.Build.0 = Debug|Any CPU
3236
{ACA9A018-ABF3-4C60-995F-99C4777CED71}.Release|Any CPU.ActiveCfg = Release|Any CPU

Untitled1.ps1

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
&"C:\DEV\OSS_Own\snoopwpf\bin\Debug\Snoop.exe"
2+
&"C:\DEV\OSS_Own\NativeToManagedTest\bin\Debug\x64\netcoreapp3.0\WPFTestApp.exe"
3+
4+
#"C:\DEV\OSS_Own\snoopwpf\packages\wix\tools\heat.exe" dir . -o test.wxs -scom -sreg -svb6 -gg -suid -srd -sfrag

0 commit comments

Comments
 (0)