1- var target = Argument ( "target" , "Default" ) ;
1+ // Install addins.
2+ #addin "nuget:?package=Cake.Coveralls&version=0.5.0"
23
3- Task ( "Set-Build-Version" )
4+ // Install tools.
5+ #tool "nuget:?package=OpenCover&version=4.6.519"
6+ #tool "nuget:?package=coveralls.io&version=1.3.4"
7+ #tool "nuget:?package=xunit.runner.console&version=2.2.0"
8+
9+
10+ ///////////////////////////////////////////////////////////////////////////////
11+ // ARGUMENTS
12+ ///////////////////////////////////////////////////////////////////////////////
13+
14+ var target = Argument < string > ( "target" , "Default" ) ;
15+ var configuration = Argument < string > ( "configuration" , "Release" ) ;
16+
17+
18+ ///////////////////////////////////////////////////////////////////////////////
19+ // GLOBAL VARIABLES
20+ ///////////////////////////////////////////////////////////////////////////////
21+
22+ var libraryName = "BencodeNET" ;
23+
24+ var sourceFolder = "./" ;
25+
26+ var projectFile = "./BencodeNET/BencodeNET.csproj" ;
27+
28+ var testProjectFile = "./BencodeNET.Tests/BencodeNET.Tests.csproj" ;
29+ var codeCoverageOutput = "coverage.xml" ;
30+ var codeCoverageFilter = "+[*]* -[*.Tests]*" ;
31+
32+ var cakeVersion = typeof ( ICakeContext ) . Assembly . GetName ( ) . Version . ToString ( ) ;
33+
34+
35+ ///////////////////////////////////////////////////////////////////////////////
36+ // SETUP / TEARDOWN
37+ ///////////////////////////////////////////////////////////////////////////////
38+
39+ Setup ( context =>
40+ {
41+ Information ( $ "Building using version { cakeVersion } of Cake") ;
42+ } ) ;
43+
44+
45+ ///////////////////////////////////////////////////////////////////////////////
46+ // TASK DEFINITIONS
47+ ///////////////////////////////////////////////////////////////////////////////
48+
49+ Task ( "Update-Build-Version" )
50+ . WithCriteria ( ( ) => AppVeyor . IsRunningOnAppVeyor )
451 . Does ( ( ) =>
552{
6- var projectFile = "./BencodeNET/BencodeNET.csproj" ;
753 var versionPeekXpath = "/Project/PropertyGroup/Version/text()" ;
854 var versionPokeXpath = "/Project/PropertyGroup/Version" ;
955
56+ var buildNumber = AppVeyor . Environment . Build . Number ;
1057 var version = XmlPeek ( projectFile , versionPeekXpath ) ;
58+
59+ Information ( "AppVeyor build version is " + AppVeyor . Environment . Build . Version ) ;
60+ Information ( "Project version is " + version ) ;
61+
1162 var parts = version . Split ( '.' ) ;
63+ version = string . Join ( "." , parts [ 0 ] , parts [ 1 ] , buildNumber ) ;
64+
65+ Information ( "Changing versions to " + version ) ;
66+
67+ AppVeyor . UpdateBuildVersion ( version ) ;
68+ XmlPoke ( projectFile , versionPokeXpath , version ) ;
69+ } ) ;
1270
13- var buildNumber = 0 ;
71+ Task ( "Restore-NuGet-Packages" )
72+ . Does ( ( ) =>
73+ {
74+ DotNetCoreRestore ( ) ;
75+ } ) ;
1476
15- if ( BuildSystem . IsRunningOnAppVeyor )
77+ Task ( "Build" )
78+ . IsDependentOn ( "Restore-NuGet-Packages" )
79+ . Does ( ( ) =>
80+ {
81+ DotNetCoreBuild ( sourceFolder + libraryName + ".sln" , new DotNetCoreBuildSettings
1682 {
17- buildNumber = AppVeyor . Environment . Build . Number ;
18- }
83+ Configuration = configuration
84+ } ) ;
85+ } ) ;
1986
20- version = string . Join ( "." , parts [ 0 ] , parts [ 1 ] , buildNumber ) ;
87+ Task ( "Run-Unit-Tests" )
88+ . IsDependentOn ( "Build" )
89+ . Does ( ( ) =>
90+ {
91+ DotNetCoreTest ( testProjectFile , new DotNetCoreTestSettings
92+ {
93+ NoBuild = true ,
94+ Configuration = configuration
95+ } ) ;
96+ } ) ;
2197
22- if ( BuildSystem . IsRunningOnAppVeyor )
98+ Task ( "Run-Code-Coverage" )
99+ . IsDependentOn ( "Build" )
100+ . Does ( ( ) =>
101+ {
102+ Action < ICakeContext > testAction = ctx => ctx . DotNetCoreTest ( testProjectFile , new DotNetCoreTestSettings
23103 {
24- AppVeyor . UpdateBuildVersion ( version ) ;
25- Information ( "Updated AppVeyor build version to " + version ) ;
26- }
104+ NoBuild = true ,
105+ Configuration = configuration
106+ } ) ;
27107
28- XmlPoke ( projectFile , versionPokeXpath , version ) ;
29- Information ( "Set project version to " + version ) ;
108+ OpenCover ( testAction ,
109+ codeCoverageOutput ,
110+ new OpenCoverSettings
111+ {
112+ OldStyle = true ,
113+ SkipAutoProps = true ,
114+ MergeOutput = false
115+ }
116+ . WithFilter ( codeCoverageFilter )
117+ ) ;
118+ } ) ;
119+
120+ Task ( "Upload-Coverage-Result" )
121+ . Does ( ( ) =>
122+ {
123+ CoverallsIo ( codeCoverageOutput ) ;
30124} ) ;
31125
126+
127+ ///////////////////////////////////////////////////////////////////////////////
128+ // TARGETS
129+ ///////////////////////////////////////////////////////////////////////////////
130+
131+ Task ( "AppVeyor" )
132+ . IsDependentOn ( "Update-Build-Version" )
133+ . IsDependentOn ( "Run-Code-Coverage" )
134+ . IsDependentOn ( "Upload-Coverage-Result" ) ;
135+
32136Task ( "Default" )
33- . IsDependentOn ( "Set-Build-Version" ) ;
137+ . IsDependentOn ( "AppVeyor" ) ;
138+
139+
140+ ///////////////////////////////////////////////////////////////////////////////
141+ // EXECUTION
142+ ///////////////////////////////////////////////////////////////////////////////
34143
35144RunTarget ( target ) ;
0 commit comments