Skip to content
This repository was archived by the owner on Mar 19, 2025. It is now read-only.

Commit 1c47cf9

Browse files
+ added templates folder for starter files
1 parent 619b7b2 commit 1c47cf9

File tree

7 files changed

+238
-0
lines changed

7 files changed

+238
-0
lines changed

SubPointSolutions.CakeBuildTools/SubPointSolutions.CakeBuildTools.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@
4949
<None Include="Scripts\SubPointSolutions.CakeBuild.Core.cake">
5050
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
5151
</None>
52+
<None Include="Templates\build.cake" />
53+
<None Include="Templates\build.json" />
54+
<None Include="Templates\build.ps1" />
55+
<None Include="Templates\tools\nuget.config" />
56+
<None Include="Templates\tools\packages.config" />
57+
<None Include="Templates\tools\packages.config.md5sum" />
5258
</ItemGroup>
5359
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
5460
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// load up common tools
2+
#load tools/SubPointSolutions.CakeBuildTools/scripts/SubPointSolutions.CakeBuild.Core.cake
3+
4+
// default targets
5+
RunTarget(target);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"defaultSolutionDirectory": "./../",
3+
"defaultSolutionFilePath": "./../YourSolution.sln",
4+
"defaultNuGetPackagesDirectory": "./build-artifact-nuget-packages",
5+
"defaultChocolateyPackagesDirectory": "./build-artifact-cli-packages",
6+
"defaultNuspecVersion": "0.1.0",
7+
8+
"defaultTestCategories": [
9+
"CI.Core"
10+
],
11+
"customNuspecs": [
12+
13+
],
14+
"customChocolateySpecs": [
15+
16+
],
17+
"defaultTestAssemblyPaths": [
18+
19+
],
20+
"defaultBuildDirs": [ ],
21+
"defaultEnvironmentVariables": [ ]
22+
}
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
##########################################################################
2+
# This is the Cake bootstrapper script for PowerShell.
3+
# This file was downloaded from https://github.com/cake-build/resources
4+
# Feel free to change this file to fit your needs.
5+
##########################################################################
6+
7+
<#
8+
9+
.SYNOPSIS
10+
This is a Powershell script to bootstrap a Cake build.
11+
12+
.DESCRIPTION
13+
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
14+
and execute your Cake build script with the parameters you provide.
15+
16+
.PARAMETER Script
17+
The build script to execute.
18+
.PARAMETER Target
19+
The build script target to run.
20+
.PARAMETER Configuration
21+
The build configuration to use.
22+
.PARAMETER Verbosity
23+
Specifies the amount of information to be displayed.
24+
.PARAMETER Experimental
25+
Tells Cake to use the latest Roslyn release.
26+
.PARAMETER WhatIf
27+
Performs a dry run of the build script.
28+
No tasks will be executed.
29+
.PARAMETER Mono
30+
Tells Cake to use the Mono scripting engine.
31+
.PARAMETER SkipToolPackageRestore
32+
Skips restoring of packages.
33+
.PARAMETER ScriptArgs
34+
Remaining arguments are added here.
35+
36+
.LINK
37+
http://cakebuild.net
38+
39+
#>
40+
41+
[CmdletBinding()]
42+
Param(
43+
[string]$Script = "build.cake",
44+
[string]$Target = "Default",
45+
[ValidateSet("Release", "Debug")]
46+
[string]$Configuration = "Debug",
47+
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
48+
[string]$Verbosity = "Verbose",
49+
[switch]$Experimental,
50+
[Alias("DryRun","Noop")]
51+
[switch]$WhatIf,
52+
[switch]$Mono,
53+
[switch]$SkipToolPackageRestore,
54+
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
55+
[string[]]$ScriptArgs
56+
)
57+
58+
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
59+
function MD5HashFile([string] $filePath)
60+
{
61+
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
62+
{
63+
return $null
64+
}
65+
66+
[System.IO.Stream] $file = $null;
67+
[System.Security.Cryptography.MD5] $md5 = $null;
68+
try
69+
{
70+
$md5 = [System.Security.Cryptography.MD5]::Create()
71+
$file = [System.IO.File]::OpenRead($filePath)
72+
return [System.BitConverter]::ToString($md5.ComputeHash($file))
73+
}
74+
finally
75+
{
76+
if ($file -ne $null)
77+
{
78+
$file.Dispose()
79+
}
80+
}
81+
}
82+
83+
Write-Host "Preparing to run build script..."
84+
85+
if(!$PSScriptRoot){
86+
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
87+
}
88+
89+
cd $PSScriptRoot
90+
91+
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
92+
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
93+
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
94+
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
95+
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
96+
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
97+
98+
# Should we use mono?
99+
$UseMono = "";
100+
if($Mono.IsPresent) {
101+
Write-Verbose -Message "Using the Mono based scripting engine."
102+
$UseMono = "-mono"
103+
}
104+
105+
# Should we use the new Roslyn?
106+
$UseExperimental = "";
107+
if($Experimental.IsPresent -and !($Mono.IsPresent)) {
108+
Write-Verbose -Message "Using experimental version of Roslyn."
109+
$UseExperimental = "-experimental"
110+
}
111+
112+
# Is this a dry run?
113+
$UseDryRun = "";
114+
if($WhatIf.IsPresent) {
115+
$UseDryRun = "-dryrun"
116+
}
117+
118+
# Make sure tools folder exists
119+
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
120+
Write-Verbose -Message "Creating tools directory..."
121+
New-Item -Path $TOOLS_DIR -Type directory | out-null
122+
}
123+
124+
# Make sure that packages.config exist.
125+
if (!(Test-Path $PACKAGES_CONFIG)) {
126+
Write-Verbose -Message "Downloading packages.config..."
127+
try { (New-Object System.Net.WebClient).DownloadFile("http://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
128+
Throw "Could not download packages.config."
129+
}
130+
}
131+
132+
# Try find NuGet.exe in path if not exists
133+
if (!(Test-Path $NUGET_EXE)) {
134+
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
135+
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }
136+
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
137+
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
138+
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
139+
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
140+
}
141+
}
142+
143+
# Try download NuGet.exe if not exists
144+
if (!(Test-Path $NUGET_EXE)) {
145+
Write-Verbose -Message "Downloading NuGet.exe..."
146+
try {
147+
(New-Object System.Net.WebClient).DownloadFile($NUGET_URL, $NUGET_EXE)
148+
} catch {
149+
Throw "Could not download NuGet.exe."
150+
}
151+
}
152+
153+
# Save nuget.exe path to environment to be available to child processed
154+
$ENV:NUGET_EXE = $NUGET_EXE
155+
156+
# Restore tools from NuGet?
157+
if(-Not $SkipToolPackageRestore.IsPresent) {
158+
Push-Location
159+
Set-Location $TOOLS_DIR
160+
161+
# Check for changes in packages.config and remove installed tools if true.
162+
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
163+
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
164+
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
165+
Write-Verbose -Message "Missing or changed package.config hash..."
166+
Remove-Item * -Recurse -Exclude packages.config,nuget.exe
167+
}
168+
169+
Write-Verbose -Message "Restoring tools from NuGet..."
170+
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
171+
172+
if ($LASTEXITCODE -ne 0) {
173+
Throw "An error occured while restoring NuGet tools."
174+
}
175+
else
176+
{
177+
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
178+
}
179+
Write-Verbose -Message ($NuGetOutput | out-string)
180+
Pop-Location
181+
}
182+
183+
# Make sure that Cake has been installed.
184+
if (!(Test-Path $CAKE_EXE)) {
185+
Throw "Could not find Cake.exe at $CAKE_EXE"
186+
}
187+
188+
# Start Cake
189+
Write-Host "Running build script..."
190+
Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs"
191+
exit $LASTEXITCODE
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<packageSources>
4+
<add key="NuGet" value="https://www.nuget.org/api/v2/" />
5+
<add key="SubPointSolutions Staging" value="https://www.myget.org/F/subpointsolutions-staging/api/v2" />
6+
<add key="SubPointSolutions Appeyor CI - cakebuildtools" value="https://ci.appveyor.com/nuget/subpointsolutions-cakebuildtools" />
7+
</packageSources>
8+
</configuration>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="Cake" version="0.17.0" />
4+
<package id="SubPointSolutions.CakeBuildTools" version="0.1.0-alpha170521456" />
5+
</packages>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1E-30-75-ED-E8-A0-8E-6E-ED-7C-7F-40-98-54-8D-A7

0 commit comments

Comments
 (0)