From 96bbddcdd9b4fe67f70c720577f001782a782218 Mon Sep 17 00:00:00 2001 From: Gary Woodfine Date: Wed, 12 Aug 2020 09:52:17 +0100 Subject: [PATCH] WIP - Added Cake Build script --- README.md | 7 ++- appveyor.yml | 7 --- build.cake | 82 ++++++++++++++++++++++++++++++++++++ build.sh | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++ build.sln | 16 ------- 5 files changed, 205 insertions(+), 24 deletions(-) delete mode 100644 appveyor.yml create mode 100644 build.cake create mode 100755 build.sh delete mode 100644 build.sln diff --git a/README.md b/README.md index 43b5052..36cd135 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Threenine.Map -[![Build status](https://ci.appveyor.com/api/projects/status/5tm9exklhej7jhs9?svg=true)](https://ci.appveyor.com/project/garywoodfine/reflectmap) [![NuGet](http://img.shields.io/nuget/v/Threenine.Map.svg)](https://www.nuget.org/packages/Threenine.Map/) [![NuGet Downloads](http://img.shields.io/nuget/dt/Threenine.Map.svg?style=flat)](https://www.nuget.org/packages/Threenine.Map/) [![Twitter Follow](https://img.shields.io/twitter/follow/threenine39.svg?style=social?maxAge=2592000)](https://twitter.com/threenine39) [![Documentation Status](https://readthedocs.org/projects/threeninemap/badge/?version=latest)](http://threeninemap.readthedocs.io/en/latest/?badge=latest) +[![NuGet](http://img.shields.io/nuget/v/Threenine.Map.svg)](https://www.nuget.org/packages/Threenine.Map/) [![NuGet Downloads](http://img.shields.io/nuget/dt/Threenine.Map.svg?style=flat)](https://www.nuget.org/packages/Threenine.Map/) [![Twitter Follow](https://img.shields.io/twitter/follow/threenine39.svg?style=social?maxAge=2592000)](https://twitter.com/threenine39) [![Documentation Status](https://readthedocs.org/projects/threeninemap/badge/?version=latest)](http://threeninemap.readthedocs.io/en/latest/?badge=latest) Want a simple way to create clean & simple configuration for AutoMapper? @@ -29,6 +29,11 @@ We are currently compiling comprehensive documentation and examples of use of a If you find there are aspects of the library that you are unsure of or would like further clarification, [report an issue](https://github.com/threenine/ReflectMap/issues) and we'll attempt to address is as soon as resource allows. +### Support This Project + +If you have found this project helpful, either as a library that you use or as a learning tool, please consider buying the team a coffee: + +Buy Me A Coffee diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 4a25068..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 1.0.{build} -configuration: Release -platform: x64 -build: - project: Threenine.Map.sln - publish_nuget: true - verbosity: detailed \ No newline at end of file diff --git a/build.cake b/build.cake new file mode 100644 index 0000000..75a37a7 --- /dev/null +++ b/build.cake @@ -0,0 +1,82 @@ +#tool "nuget:?package=JetBrains.dotCover.CommandLineTools&version=2020.1.4" +var target = Argument("Target", "Default"); +var configuration = Argument("Configuration", "Release"); + +Information($"Running target {target} in configuration {configuration}"); + +var distDirectory = Directory("./build"); +var packageDirectory = Directory("./package"); +var temporaryFolder = Directory("./temp"); +TaskSetup(setupContext => +{ + if(TeamCity.IsRunningOnTeamCity) + { + TeamCity.WriteStartBuildBlock(setupContext.Task.Description ?? setupContext.Task.Name); + } +}); + +TaskTeardown(teardownContext => +{ + if(TeamCity.IsRunningOnTeamCity) + { + TeamCity.WriteEndProgress(teardownContext.Task.Description ?? teardownContext.Task.Name); + } +}); + +Task("Clean") + .Description("Cleaning the solution directory") + .Does(() => + { + CleanDirectory(distDirectory); + }); + +Task("Restore") + .Description("Restoring the solution dependencies") + .Does(() => + { + DotNetCoreRestore(); + }); + + Task("Build") + .Description("Building the Solution") + .Does(() => + { + + var buildSettings = new DotNetCoreBuildSettings { + Configuration = configuration, + ArgumentCustomization = args => args.Append("--no-restore"), + }; + var projects = GetFiles("./**/*.csproj"); + + foreach(var project in projects) + { + Information("Building Project: " + project.ToString()); + DotNetCoreBuild(project.ToString(), buildSettings); + } + }); + +Task("Test") + .Description("Running Unit Tests") + .Does(() => + { + var projects = GetFiles("./tests/**/*.Tests.csproj"); + foreach(var project in projects) + { + Information("Testing project " + project); + DotNetCoreTest( + project.ToString(), + new DotNetCoreTestSettings() + { + Configuration = configuration + }); + } + }); + +Task("Default") + .Description("Default build task") + .IsDependentOn("Clean") + .IsDependentOn("Restore") + .IsDependentOn("Build") + .IsDependentOn("Test"); + +RunTarget(target); \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..b9e1252 --- /dev/null +++ b/build.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +########################################################################## +# This is the Cake bootstrapper script for Linux and OS X. +# This file was downloaded from https://github.com/cake-build/resources +# Feel free to change this file to fit your needs. +########################################################################## + +# Define directories. +SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +TOOLS_DIR=$SCRIPT_DIR/tools +ADDINS_DIR=$TOOLS_DIR/Addins +MODULES_DIR=$TOOLS_DIR/Modules +NUGET_EXE=$TOOLS_DIR/nuget.exe +CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe +PACKAGES_CONFIG=$TOOLS_DIR/packages.config +PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum +ADDINS_PACKAGES_CONFIG=$ADDINS_DIR/packages.config +MODULES_PACKAGES_CONFIG=$MODULES_DIR/packages.config + +# Define md5sum or md5 depending on Linux/OSX +MD5_EXE= +if [[ "$(uname -s)" == "Darwin" ]]; then + MD5_EXE="md5 -r" +else + MD5_EXE="md5sum" +fi + +# Define default arguments. +SCRIPT="build.cake" +CAKE_ARGUMENTS=() + +# Parse arguments. +for i in "$@"; do + case $1 in + -s|--script) SCRIPT="$2"; shift ;; + --) shift; CAKE_ARGUMENTS+=("$@"); break ;; + *) CAKE_ARGUMENTS+=("$1") ;; + esac + shift +done + +# Make sure the tools folder exist. +if [ ! -d "$TOOLS_DIR" ]; then + mkdir "$TOOLS_DIR" +fi + +# Make sure that packages.config exist. +if [ ! -f "$TOOLS_DIR/packages.config" ]; then + echo "Downloading packages.config..." + curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages + if [ $? -ne 0 ]; then + echo "An error occurred while downloading packages.config." + exit 1 + fi +fi + +# Download NuGet if it does not exist. +if [ ! -f "$NUGET_EXE" ]; then + echo "Downloading NuGet..." + curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe + if [ $? -ne 0 ]; then + echo "An error occurred while downloading nuget.exe." + exit 1 + fi +fi + +# Restore tools from NuGet. +pushd "$TOOLS_DIR" >/dev/null +if [ ! -f "$PACKAGES_CONFIG_MD5" ] || [ "$( cat "$PACKAGES_CONFIG_MD5" | sed 's/\r$//' )" != "$( $MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' )" ]; then + find . -type d ! -name . ! -name 'Cake.Bakery' | xargs rm -rf +fi + +mono "$NUGET_EXE" install -ExcludeVersion +if [ $? -ne 0 ]; then + echo "Could not restore NuGet tools." + exit 1 +fi + +$MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' >| "$PACKAGES_CONFIG_MD5" + +popd >/dev/null + +# Restore addins from NuGet. +if [ -f "$ADDINS_PACKAGES_CONFIG" ]; then + pushd "$ADDINS_DIR" >/dev/null + + mono "$NUGET_EXE" install -ExcludeVersion + if [ $? -ne 0 ]; then + echo "Could not restore NuGet addins." + exit 1 + fi + + popd >/dev/null +fi + +# Restore modules from NuGet. +if [ -f "$MODULES_PACKAGES_CONFIG" ]; then + pushd "$MODULES_DIR" >/dev/null + + mono "$NUGET_EXE" install -ExcludeVersion + if [ $? -ne 0 ]; then + echo "Could not restore NuGet modules." + exit 1 + fi + + popd >/dev/null +fi + +# Make sure that Cake has been installed. +if [ ! -f "$CAKE_EXE" ]; then + echo "Could not find Cake.exe at '$CAKE_EXE'." + exit 1 +fi + +# Start Cake +exec mono "$CAKE_EXE" $SCRIPT "${CAKE_ARGUMENTS[@]}" diff --git a/build.sln b/build.sln deleted file mode 100644 index f9e2b35..0000000 --- a/build.sln +++ /dev/null @@ -1,16 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Threenine.Map", "src\Threenine.Map.csproj", "{C74EF3E6-C609-4A81-BF56-C689A0091CD0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C74EF3E6-C609-4A81-BF56-C689A0091CD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C74EF3E6-C609-4A81-BF56-C689A0091CD0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C74EF3E6-C609-4A81-BF56-C689A0091CD0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C74EF3E6-C609-4A81-BF56-C689A0091CD0}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal