From d113efcf471f3ae560fe6660997e80c35745675c Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 21:57:33 -0400 Subject: [PATCH 01/17] Move Cake builds to subdirectory --- build.cake | 2 +- build-extra.cake => cake/build-extra.cake | 0 utilities.cake => cake/utilities.cake | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename build-extra.cake => cake/build-extra.cake (100%) rename utilities.cake => cake/utilities.cake (100%) diff --git a/build.cake b/build.cake index 0efe44d..229c298 100644 --- a/build.cake +++ b/build.cake @@ -1,4 +1,4 @@ -#l "build-extra.cake" +#l "cake/build-extra.cake" var target = Argument("target", "Package"); var release = Argument("release", false); diff --git a/build-extra.cake b/cake/build-extra.cake similarity index 100% rename from build-extra.cake rename to cake/build-extra.cake diff --git a/utilities.cake b/cake/utilities.cake similarity index 100% rename from utilities.cake rename to cake/utilities.cake From 627498cd58cc419382ed7cf715fce9ef2948f65d Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 21:58:37 -0400 Subject: [PATCH 02/17] Update Cake to 0.19.5 --- packages.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.config b/packages.config index 0f5b485..d3cef75 100644 --- a/packages.config +++ b/packages.config @@ -1,5 +1,5 @@  - + From fc9c2ba686d3d15107518301a1bd0f3d3409aac8 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:01:22 -0400 Subject: [PATCH 03/17] Use Cake.Yaml package --- cake/utilities.cake | 66 ++++++++++++++++++++++++--------------------- packages.config | 1 - 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/cake/utilities.cake b/cake/utilities.cake index 6e8d12f..0670779 100644 --- a/cake/utilities.cake +++ b/cake/utilities.cake @@ -1,7 +1,6 @@ -#r "Library/NuGet/YamlDotNet.3.6.1/lib/net35/YamlDotNet.dll" +#addin "nuget:?package=Cake.Yaml&version=1.0.3.7" using System.Text.RegularExpressions; -using YamlDotNet.Serialization; public T GetBuildConfiguration() where T : new() { @@ -9,14 +8,11 @@ public T GetBuildConfiguration() where T : new() var workingDirectoryName = workingDirectorySegments[workingDirectorySegments.Length - 1]; var configFile = (new [] { "build.yml", String.Format("../{0}.build.yml", workingDirectoryName) }) - .FirstOrDefault(System.IO.File.Exists); + .Select(i => File(i)) + .Select(i => i.Path) + .FirstOrDefault(FileExists); - if (configFile == null) - { - return new T(); - } - - return new Deserializer(ignoreUnmatched: true).Deserialize(new StreamReader(configFile)); + return configFile != null ? DeserializeYamlFromFile(configFile) : new T(); } public string GetSolution() @@ -42,37 +38,41 @@ public string GetSolution() public string Which(string executable) { - var seperator = new char[] { System.Environment.OSVersion.Platform == PlatformID.Unix ? ':' : ';' }; + char[] seperators = { System.IO.Path.PathSeparator }; var envPath = Environment.GetEnvironmentVariable("PATH"); var envPathExt = Environment.GetEnvironmentVariable("PATHEXT"); var paths = envPath == null ? new string[0] : - envPath.Split(seperator, StringSplitOptions.RemoveEmptyEntries); + envPath.Split(seperators, StringSplitOptions.RemoveEmptyEntries); var pathExts = envPathExt == null ? new string[0] : - envPathExt.Split(seperator, StringSplitOptions.RemoveEmptyEntries); + envPathExt.Split(seperators, StringSplitOptions.RemoveEmptyEntries); foreach (var path in paths) { var testPath = System.IO.Path.Combine(path, executable); - if (System.IO.File.Exists(testPath)) - { - return testPath; - } - + /* We test the extensionful version first since it's not uncommon for multiplatform programs to ship with a + * Unix executable without an extension in the same directory as a Windows extension with an extension such as + * .cmd, .bat. In those cases trying to execute the extensionless version will fail on Windows. + */ foreach (var pathExt in pathExts) { var testPathExt = System.IO.Path.Combine(path, executable) + pathExt; - if (System.IO.File.Exists(testPathExt)) + if (FileExists(testPathExt)) { return testPathExt; } } + + if (FileExists(testPath)) + { + return testPath; + } } return null; @@ -88,7 +88,11 @@ public string GetGitRevision(bool useShort) var shortOption = useShort ? "--short" : ""; StartProcess(git, - new ProcessSettings { RedirectStandardOutput = true, Arguments = $"rev-parse {shortOption} HEAD"}, + new ProcessSettings + { + RedirectStandardOutput = true, + Arguments = string.Format("rev-parse {0} HEAD", shortOption) + }, out output ); @@ -113,15 +117,15 @@ public SemVer GetVersion() public ChangeLog GetChangeLog() { - return new ChangeLog("CHANGES.md"); + return new ChangeLog("CHANGELOG.md"); } public sealed class ChangeLog { private static readonly Regex VersionPattern = new Regex(@"^## v(?.+)$", RegexOptions.Compiled); - public SemVer LatestVersion { get; } - public string LatestChanges { get; } + public SemVer LatestVersion { get; private set; } + public string LatestChanges { get; private set; } public ChangeLog(string path) { @@ -172,11 +176,11 @@ public sealed class SemVer private string _string; - public uint Major { get; } - public uint Minor { get; } - public uint Patch { get; } - public string Pre { get; } - public string Build { get; } + public uint Major { get; private set; } + public uint Minor { get; private set; } + public uint Patch { get; private set; } + public string Pre { get; private set; } + public string Build { get; private set; } public SemVer(string s) { @@ -204,7 +208,7 @@ public sealed class SemVer } else { - throw new FormatException($"Unable to parse semantic version: {_string}"); + throw new FormatException(string.Format("Unable to parse semantic version: {0}", _string)); } } @@ -216,16 +220,16 @@ public sealed class SemVer Pre = pre; Build = build; - _string = $"{Major}.{Minor}.{Patch}"; + _string = string.Format("{0}.{1}.{2}", Major, Minor, Patch); if (pre != null) { - _string += $"-{Pre}"; + _string += string.Format("-{0}", Pre); } if (build != null) { - _string += $"+{Build}"; + _string += string.Format("+{0}", Build); } } diff --git a/packages.config b/packages.config index d3cef75..a4ceec1 100644 --- a/packages.config +++ b/packages.config @@ -1,5 +1,4 @@  - From e41ada68702d2e787240b3a774848ec1ff765e7a Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:04:54 -0400 Subject: [PATCH 04/17] Move CHANGES.md to CHANGELOG.md --- CHANGES.md => CHANGELOG.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CHANGES.md => CHANGELOG.md (100%) diff --git a/CHANGES.md b/CHANGELOG.md similarity index 100% rename from CHANGES.md rename to CHANGELOG.md From f7b549ed49520408a47dd51c1b2d1d5200a0024d Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:05:14 -0400 Subject: [PATCH 05/17] Add Cake configuration --- cake.config | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cake.config diff --git a/cake.config b/cake.config new file mode 100644 index 0000000..c9369de --- /dev/null +++ b/cake.config @@ -0,0 +1,4 @@ +[Paths] +Tools=./.build/tools +Addins=./.build/cake/addins +Modules=./.build/cake/modules From 334be230c323af2c49588a1c6673d958ee17c87b Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:05:57 -0400 Subject: [PATCH 06/17] Add .build to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5d40b41..b9f1c63 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +/.build/ /Library/ /Output/ From 7a8ea78a84be8b472302147f5036595c768a2301 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:07:11 -0400 Subject: [PATCH 07/17] Move Source to src --- build.yml | 2 +- {Source => src}/Airplane.svg | 0 {Source => src}/Apokee.svg | 0 {Source => src}/Connection.svg | 0 {Source => src}/HotSpot.svg | 0 {Source => src}/Ketchup.svg | 0 {Source => src}/PlaneMode.svg | 0 {Source => src}/Rocket.svg | 0 8 files changed, 1 insertion(+), 1 deletion(-) rename {Source => src}/Airplane.svg (100%) rename {Source => src}/Apokee.svg (100%) rename {Source => src}/Connection.svg (100%) rename {Source => src}/HotSpot.svg (100%) rename {Source => src}/Ketchup.svg (100%) rename {Source => src}/PlaneMode.svg (100%) rename {Source => src}/Rocket.svg (100%) diff --git a/build.yml b/build.yml index eb61882..36ac7ba 100644 --- a/build.yml +++ b/build.yml @@ -1,4 +1,4 @@ -input_dir: "Source" +input_dir: "src" output_dir: "Output/Build" conversions: diff --git a/Source/Airplane.svg b/src/Airplane.svg similarity index 100% rename from Source/Airplane.svg rename to src/Airplane.svg diff --git a/Source/Apokee.svg b/src/Apokee.svg similarity index 100% rename from Source/Apokee.svg rename to src/Apokee.svg diff --git a/Source/Connection.svg b/src/Connection.svg similarity index 100% rename from Source/Connection.svg rename to src/Connection.svg diff --git a/Source/HotSpot.svg b/src/HotSpot.svg similarity index 100% rename from Source/HotSpot.svg rename to src/HotSpot.svg diff --git a/Source/Ketchup.svg b/src/Ketchup.svg similarity index 100% rename from Source/Ketchup.svg rename to src/Ketchup.svg diff --git a/Source/PlaneMode.svg b/src/PlaneMode.svg similarity index 100% rename from Source/PlaneMode.svg rename to src/PlaneMode.svg diff --git a/Source/Rocket.svg b/src/Rocket.svg similarity index 100% rename from Source/Rocket.svg rename to src/Rocket.svg From bd5812fe60dbec6e1209f225c626c55c3f747862 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:08:07 -0400 Subject: [PATCH 08/17] Move Output to .build/out --- Apokee.Artwork.nuspec | 2 +- build.cake | 14 +++++++------- build.yml | 2 +- cake/build-extra.cake | 3 +++ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Apokee.Artwork.nuspec b/Apokee.Artwork.nuspec index d67f9b0..10d9a99 100644 --- a/Apokee.Artwork.nuspec +++ b/Apokee.Artwork.nuspec @@ -11,7 +11,7 @@ https://raw.githubusercontent.com/Apokee/Artwork/master/LICENSE.md - + diff --git a/build.cake b/build.cake index 229c298..3cdfa1a 100644 --- a/build.cake +++ b/build.cake @@ -5,9 +5,9 @@ var release = Argument("release", false); var buildConfig = GetBuildConfiguration(); -var outputDir = System.IO.Path.Combine("Output"); -var outputBuildDir = System.IO.Path.Combine(outputDir, "Build"); -var outputPackageDir = System.IO.Path.Combine(outputDir, "Package"); +var outputDir = System.IO.Path.Combine(".build/out"); +var outputBuildDir = System.IO.Path.Combine(outputDir, "build"); +var outputPackageDir = System.IO.Path.Combine(outputDir, "package"); Task("CleanBuild") .Does(() => @@ -46,9 +46,9 @@ Task("BuildVersionInfo") buildVersion = version; } - System.IO.File.WriteAllText("Output/VERSION", buildVersion); - System.IO.File.WriteAllText("Output/PRELEASE", (buildVersion.Pre != null).ToString().ToLower()); - System.IO.File.WriteAllText("Output/CHANGELOG", changeLog.LatestChanges); + System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "VERSION"), buildVersion); + System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "PRELEASE"), (buildVersion.Pre != null).ToString().ToLower()); + System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "CHANGELOG"), changeLog.LatestChanges); }); Task("Build") @@ -92,5 +92,5 @@ RunTarget(target); private SemVer GetBuildVersion() { - return new SemVer(System.IO.File.ReadAllText("Output/VERSION")); + return new SemVer(System.IO.File.ReadAllText(System.IO.Path.Combine(outputDir, "VERSION"))); } diff --git a/build.yml b/build.yml index 36ac7ba..cb574db 100644 --- a/build.yml +++ b/build.yml @@ -1,5 +1,5 @@ input_dir: "src" -output_dir: "Output/Build" +output_dir: ".build/out/build" conversions: - input: Airplane.svg diff --git a/cake/build-extra.cake b/cake/build-extra.cake index e3511b8..f42e252 100644 --- a/cake/build-extra.cake +++ b/cake/build-extra.cake @@ -38,6 +38,9 @@ public void Convert(BuildConfig buildConfig) { Console.WriteLine("Converting {0} -> {1}", conversion.Input, conversion.Output); + if (!DirectoryExists(buildConfig.OutputDir)) + CreateDirectory(buildConfig.OutputDir); + Convert( System.IO.Path.Combine(buildConfig.InputDir, conversion.Input), System.IO.Path.Combine(buildConfig.OutputDir, conversion.Output), From b9557a578a14c209b289021aa757a5013fcd1e18 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:18:56 -0400 Subject: [PATCH 09/17] Move Library to .build/lib --- build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.ps1 b/build.ps1 index c766631..94922dc 100644 --- a/build.ps1 +++ b/build.ps1 @@ -12,7 +12,7 @@ Param ( $UseExperimental = $true $RootDir = "$PSScriptRoot" $PackagesConfigFile = "$RootDir/packages.config" -$PackagesDir = "$RootDir/Library/NuGet" +$PackagesDir = "$RootDir/.build/lib/nuget" $CakeVersionXPath = "//package[@id='Cake'][1]/@version" $CakeVersion = (Select-Xml -Xml ([xml](Get-Content $PackagesConfigFile)) -XPath $CakeVersionXPath).Node.Value $CakeExe = "$PackagesDir/Cake.$CakeVersion/Cake.exe" From 232b1d7f42d11222f02be27d8c70007f0ebf7e8a Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:20:57 -0400 Subject: [PATCH 10/17] Update AppVeyor configuration --- appveyor.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index f01d09a..016b50e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,16 +21,16 @@ before_build: build_script: ps: | if ($env:BUILD_RELEASE -eq "True") { - ./build -release=true + ./build --release=true } else { ./build } after_build: ps: | - $env:BUILD_VERSION = (cat Output/VERSION) - $env:BUILD_PRELEASE = (cat Output/PRELEASE) - $env:BUILD_CHANGELOG = [System.String]::Join("\n", (cat Output/CHANGELOG)) + $env:BUILD_VERSION = (cat .build/out/VERSION) + $env:BUILD_PRELEASE = (cat .build/out/PRELEASE) + $env:BUILD_CHANGELOG = [System.String]::Join("\n", (cat .build/out/CHANGELOG)) $versionMessage = "Version: $env:BUILD_VERSION" @@ -44,10 +44,10 @@ after_build: test: off artifacts: - - path: 'Output\Package\*.nupkg' + - path: '.build\out\package\*.nupkg' name: NuGetPackage - - path: 'Output\Package\*.zip' + - path: '.build\out\package\*.zip' name: ZipPackage deploy: From 1a93c3a1a07fd9aac77a99c00725accdbcd5bb76 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:25:53 -0400 Subject: [PATCH 11/17] Update build.ps1 --- build.ps1 | 92 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/build.ps1 b/build.ps1 index 94922dc..74b2c6f 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,41 +1,51 @@ -Param ( - [Parameter(Position = 0)] - [string]$Arg0, - - [Parameter(ValueFromRemainingArguments = $true)] - [Object[]]$RemainingArgs -) - -# Globals -# TODO: The experimental flag is necessary after upgrading to VS2015 until the final version of Roslyn is available -# This should presumably occur once VS2015 is final -$UseExperimental = $true -$RootDir = "$PSScriptRoot" -$PackagesConfigFile = "$RootDir/packages.config" -$PackagesDir = "$RootDir/.build/lib/nuget" -$CakeVersionXPath = "//package[@id='Cake'][1]/@version" -$CakeVersion = (Select-Xml -Xml ([xml](Get-Content $PackagesConfigFile)) -XPath $CakeVersionXPath).Node.Value -$CakeExe = "$PackagesDir/Cake.$CakeVersion/Cake.exe" - -# Install build packages -iex "NuGet install `"$PackagesConfigFile`" -OutputDirectory `"$PackagesDir`"" | - Select-String -NotMatch -Pattern "All packages listed in packages.config are already installed." - -# Build args -$cakeArgs = @() - -if ($Arg0) { - if ($Arg0[0] -eq "-") { - $cakeArgs += "$Arg0" - } else { - $cakeArgs += "-target=$Arg0" - } -} - -if ($UseExperimental) { - $cakeArgs += "-experimental" -} - -# Run Cake -iex "$CakeExe $cakeArgs $RemainingArgs" -exit $LASTEXITCODE +Param ( + [Parameter(Position = 0)] + [string]$Arg0, + + [Parameter(ValueFromRemainingArguments = $true)] + [Object[]]$RemainingArgs +) + +# Globals +$NugetVersion = "4.1.0" +$UseExperimental = $false +$RootDir = "${PSScriptRoot}" +$BuildDir = "${RootDir}/.build" +$ToolsDir = "${BuildDir}/tools" +$PackagesDir = "${BuildDir}/lib/nuget" +$NugetExe = "${ToolsDir}/nuget/${NugetVersion}/NuGet.exe" +$PackagesConfigFile = "${RootDir}/packages.config" +$CakeVersion = (Select-Xml -Xml ([xml](Get-Content $PackagesConfigFile)) -XPath "//package[@id='Cake'][1]/@version").Node.Value +$CakeExe = "${PackagesDir}/Cake.${CakeVersion}/Cake.exe" + +# Download NuGet +$nugetDir = Split-Path $NugetExe -Parent +if (!(Test-Path $nugetDir)) { + mkdir $nugetDir > $null +} + +if (!(Test-Path $NugetExe)) { + (New-Object System.Net.WebClient).DownloadFile("https://dist.nuget.org/win-x86-commandline/v${NugetVersion}/nuget.exe", $NugetExe) +} + +# Install build packages +iex "${NugetExe} install `"${PackagesConfigFile}`" -OutputDirectory `"${PackagesDir}`"" + +# Build args +$cakeArgs = @() + +if ($Arg0) { + if ($Arg0[0] -eq "-") { + $cakeArgs += "${Arg0}" + } else { + $cakeArgs += "--target=${Arg0}" + } +} + +if ($UseExperimental) { + $cakeArgs += "--experimental" +} + +# Run Cake +iex "${CakeExe} ${cakeArgs} ${RemainingArgs}" +exit $LASTEXITCODE From d63d20b0ee4fa1489ecbc37434056dfcc8f1fdbf Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sat, 27 May 2017 22:33:14 -0400 Subject: [PATCH 12/17] Use magick instead of convert --- cake/build-extra.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cake/build-extra.cake b/cake/build-extra.cake index f42e252..91ba192 100644 --- a/cake/build-extra.cake +++ b/cake/build-extra.cake @@ -74,7 +74,7 @@ public void Convert(string inputFile, string outputFile, arguments.AppendFormat(" {0} {1}", inputFile, outputFile); - var exitCode = StartProcess(Which("convert"), new ProcessSettings { Arguments = arguments.ToString() }); + var exitCode = StartProcess(Which("magick"), new ProcessSettings { Arguments = arguments.ToString() }); if (exitCode != 0) { From d1abd979355b5623edca0c61550ba37f652b4e70 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sun, 28 May 2017 09:23:54 -0400 Subject: [PATCH 13/17] Fix for ImageMagick 7 --- cake/build-extra.cake | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/cake/build-extra.cake b/cake/build-extra.cake index 91ba192..ecf67f0 100644 --- a/cake/build-extra.cake +++ b/cake/build-extra.cake @@ -58,21 +58,19 @@ public void Convert(string inputFile, string outputFile, var arguments = new StringBuilder(); if (background != null) - { arguments.AppendFormat(" -background {0}", background); - } - if (levelColors != null) - { - arguments.AppendFormat(" +level-colors {0}", levelColors); - } + arguments.AppendFormat(" {0}", inputFile); if (resize != null) - { arguments.AppendFormat(" -resize {0}", resize); - } - arguments.AppendFormat(" {0} {1}", inputFile, outputFile); + if (levelColors != null) + arguments.AppendFormat(" -channel RGB +level-colors {0}", levelColors); + + arguments.AppendFormat(" {0}", outputFile); + + Console.WriteLine(arguments.ToString()); var exitCode = StartProcess(Which("magick"), new ProcessSettings { Arguments = arguments.ToString() }); From 9a522cfa79097d148ca1a9b622d9021d3e68187d Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sun, 28 May 2017 09:52:57 -0400 Subject: [PATCH 14/17] Add Linux build file --- build | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 build diff --git a/build b/build new file mode 100755 index 0000000..9ed4c8b --- /dev/null +++ b/build @@ -0,0 +1,64 @@ +#!/bin/sh +set -e + +arg0="" +remainingArgs="" + +if [ $# -gt 0 ]; then + arg0="$1" +fi + +if [ $# -gt 1 ]; then + skippedFirst=false + for i in "$@"; do + if $skippedFirst; then + remainingArgs="$remainingArgs $i" + else + skippedFirst=true + fi + done +fi + +nugetVersion="4.1.0" +useExperimental=false +rootDir=$(dirname $0) +buildDir="$rootDir/.build" +toolsDir="$buildDir/tools" +packagesDir="$buildDir/lib/nuget" +nugetExe="$toolsDir/nuget/$nugetVersion/NuGet.exe" +packagesConfigFile="$rootDir/packages.config" +cakeVersion="$(sed -nE "s|\s*\s*|\1|p" $packagesConfigFile)" +cakeExe="$packagesDir/Cake.$cakeVersion/Cake.exe" + +nugetDir="$(dirname $nugetExe)" +if [ ! -d "$nugetDir" ]; then + mkdir -p "$nugetDir" +fi + +if [ ! -f "$nugetExe" ]; then + curl -L "https://dist.nuget.org/win-x86-commandline/v${nugetVersion}/nuget.exe" --output "$nugetExe" +fi + +mono "$nugetExe" install "$packagesConfigFile" -OutputDirectory "$packagesDir" + +cakeArgs="" + +if [ -n "$arg0" ]; then + case $arg0 in + -*) + cakeArgs="$cakeArgs $arg0" + ;; + *) + cakeArgs="$cakeArgs --target=$arg0" + ;; + esac +fi + +if $useExperimental; then + cakeArgs="$cakeArgs --experimental" +fi + +echo "CAKE: mono $cakeExe $cakeArgs $remainingArgs" + +mono "$cakeExe" $cakeArgs $remainingArgs +exit $? From 6d69cb44ca540437d09baeac439d18066bbfeca9 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sun, 28 May 2017 09:56:50 -0400 Subject: [PATCH 15/17] Add Travis CI configuration --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b7c9873 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: csharp + +script: + - ./build From f4f1f342e31975dd23c9da3673325cd42b852578 Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sun, 28 May 2017 10:08:58 -0400 Subject: [PATCH 16/17] Globals workaround --- build.cake | 65 ++++++++++++++++++++++++++++++------------- cake/build-extra.cake | 2 -- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/build.cake b/build.cake index 3cdfa1a..c5f6fe7 100644 --- a/build.cake +++ b/build.cake @@ -1,36 +1,54 @@ #l "cake/build-extra.cake" -var target = Argument("target", "Package"); -var release = Argument("release", false); - -var buildConfig = GetBuildConfiguration(); +public sealed class Globals +{ + public string Target { get; set; } + public bool Release { get; set; } + public BuildConfig BuildConfig { get; set; } + public string OutputDir { get; set; } + public string OutputBuildDir { get; set; } + public string OutputPackageDir { get; set; } +} -var outputDir = System.IO.Path.Combine(".build/out"); -var outputBuildDir = System.IO.Path.Combine(outputDir, "build"); -var outputPackageDir = System.IO.Path.Combine(outputDir, "package"); +private Globals GetGlobals() +{ + var globals = new Globals(); + globals.Target = Argument("target", "Package"); + globals.Release = Argument("release", false); + globals.BuildConfig = GetBuildConfiguration(); + globals.OutputDir = System.IO.Path.Combine(".build/out"); + globals.OutputBuildDir = System.IO.Path.Combine(globals.OutputDir, "build"); + globals.OutputPackageDir = System.IO.Path.Combine(globals.OutputDir, "package"); + + return globals; +} Task("CleanBuild") .Does(() => { - CleanDirectories(new DirectoryPath[] { outputBuildDir }); + var globals = GetGlobals(); + CleanDirectories(new DirectoryPath[] { globals.OutputBuildDir }); }); Task("CleanPackage") .Does(() => { - CleanDirectories(new DirectoryPath[] { outputPackageDir }); + var globals = GetGlobals(); + CleanDirectories(new DirectoryPath[] { globals.OutputPackageDir }); }); Task("BuildVersionInfo") .Does(() => { + var globals = GetGlobals(); + SemVer buildVersion; var changeLog = GetChangeLog(); var version = changeLog.LatestVersion; var rev = GetGitRevision(useShort: true); - if (rev != null && !release) + if (rev != null && !globals.Release) { if (version.Build == null) { @@ -46,9 +64,9 @@ Task("BuildVersionInfo") buildVersion = version; } - System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "VERSION"), buildVersion); - System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "PRELEASE"), (buildVersion.Pre != null).ToString().ToLower()); - System.IO.File.WriteAllText(System.IO.Path.Combine(outputDir, "CHANGELOG"), changeLog.LatestChanges); + System.IO.File.WriteAllText(System.IO.Path.Combine(globals.OutputDir, "VERSION"), buildVersion); + System.IO.File.WriteAllText(System.IO.Path.Combine(globals.OutputDir, "PRELEASE"), (buildVersion.Pre != null).ToString().ToLower()); + System.IO.File.WriteAllText(System.IO.Path.Combine(globals.OutputDir, "CHANGELOG"), changeLog.LatestChanges); }); Task("Build") @@ -56,8 +74,10 @@ Task("Build") .IsDependentOn("BuildVersionInfo") .Does(() => { - Convert(buildConfig); - CopyFile("LICENSE.md", System.IO.Path.Combine(outputBuildDir, "LICENSE.md")); + var globals = GetGlobals(); + + Convert(globals.BuildConfig); + CopyFile("LICENSE.md", System.IO.Path.Combine(globals.OutputBuildDir, "LICENSE.md")); }); Task("NugetPackage") @@ -65,9 +85,11 @@ Task("NugetPackage") .IsDependentOn("Build") .Does(() => { + var globals = GetGlobals(); + NuGetPack("Apokee.Artwork.nuspec", new NuGetPackSettings { Version = GetVersion().ToString(), - OutputDirectory = outputPackageDir, + OutputDirectory = globals.OutputPackageDir, }); }); @@ -76,9 +98,11 @@ Task("ZipPackage") .IsDependentOn("Build") .Does(() => { - var packageFile = System.IO.Path.Combine(outputPackageDir, String.Format("Apokee.Artwork-{0}.zip", GetBuildVersion())); + var globals = GetGlobals(); + + var packageFile = System.IO.Path.Combine(globals.OutputPackageDir, String.Format("Apokee.Artwork-{0}.zip", GetBuildVersion())); - Zip(outputBuildDir, packageFile); + Zip(globals.OutputBuildDir, packageFile); }); Task("Package") @@ -88,9 +112,10 @@ Task("Package") { }); -RunTarget(target); +RunTarget(GetGlobals().Target); private SemVer GetBuildVersion() { - return new SemVer(System.IO.File.ReadAllText(System.IO.Path.Combine(outputDir, "VERSION"))); + var globals = GetGlobals(); + return new SemVer(System.IO.File.ReadAllText(System.IO.Path.Combine(globals.OutputDir, "VERSION"))); } diff --git a/cake/build-extra.cake b/cake/build-extra.cake index ecf67f0..78cb49b 100644 --- a/cake/build-extra.cake +++ b/cake/build-extra.cake @@ -70,8 +70,6 @@ public void Convert(string inputFile, string outputFile, arguments.AppendFormat(" {0}", outputFile); - Console.WriteLine(arguments.ToString()); - var exitCode = StartProcess(Which("magick"), new ProcessSettings { Arguments = arguments.ToString() }); if (exitCode != 0) From bd1bd91d173b0ccc78cfd634071099614b3ec97f Mon Sep 17 00:00:00 2001 From: Dwayne Bent Date: Sun, 28 May 2017 10:14:01 -0400 Subject: [PATCH 17/17] Use YamlMember --- cake/build-extra.cake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cake/build-extra.cake b/cake/build-extra.cake index 78cb49b..a87ad54 100644 --- a/cake/build-extra.cake +++ b/cake/build-extra.cake @@ -4,31 +4,31 @@ using YamlDotNet.Serialization; public sealed class BuildConfig { - [YamlAlias("input_dir")] + [YamlMember(Alias = "input_dir")] public string InputDir { get; set; } - [YamlAlias("output_dir")] + [YamlMember(Alias = "output_dir")] public string OutputDir { get; set; } - [YamlAlias("conversions")] + [YamlMember(Alias = "conversions")] public ConvertConfig[] Conversions { get; set; } } public sealed class ConvertConfig { - [YamlAlias("input")] + [YamlMember(Alias = "input")] public string Input { get; set; } - [YamlAlias("output")] + [YamlMember(Alias = "output")] public string Output { get; set; } - [YamlAlias("background")] + [YamlMember(Alias = "background")] public string Background { get; set; } - [YamlAlias("level_colors")] + [YamlMember(Alias = "level_colors")] public string LevelColors { get; set; } - [YamlAlias("resize")] + [YamlMember(Alias = "resize")] public string Resize { get; set; } }