<commit_before>#Cake

Cake (C# Make) is a build automation system inspired by [Fake](http://fsharp.github.io/FAKE/).

##Roadmap

The Cake engine is pretty much done, but there are still improvements to be made. I'm still experimenting with the script API to make it as easy and intuitive as possible, so expect changes along the road.

Currently only basic MSBuild and xUnit support are implemented, but more features such as NuGet, ILMerge, NUnit, MSTest and compression support are planned. The full roadmap can be found [here](https://github.com/patriksvensson/cake/issues/milestones).

##Example

###1. Download Cake

```
C:\Project> NuGet.exe install Cake -OutputDirectory Tools -ExcludeVersion
```

###2. Create build script

```CSharp
var isTeamCityBuild = HasArgument("teamCity");
var configuration = Argument("configuration", defaultValue: "Debug");

// Access the log via script host and print some debug info.
Log.Debug("teamCity={0}", isTeamCityBuild);
Log.Debug("configuration={0}", configuration);

Task("Hello")
    .WithCriteria(isTeamCityBuild)
    .Does(c =>
{
    // Access log via context.
    c.Log.Information("Hello TeamCity!");
});

Task("Build")
    .IsDependentOn("Hello")
    .Does(c =>
{
    // Build project using MSBuild
    c.MSBuild("./src/Cake.sln", settings => 
        settings.SetPlatformTarget(PlatformTarget.x86)
            .UseToolVersion(MSBuildToolVersion.NET45)
            .WithProperty("Magic","1")
            .WithTarget("Build")
            .SetConfiguration(configuration));
});

Task("Run-Tests")
    .IsDependentOn("Build")
    .Does(c =>
{
    // Run unit tests.
    c.XUnit("./src/**/bin/" + configuration + "/*.Tests.dll");
});

// Run the script.
Run("Run-Tests");
```

###3. Run build script

```
C:\Project\Tools\Cake> Cake.exe ../../build.csx -verbosity=diagnostic -teamCity<commit_msg>Added CI status to readme.<commit_after>#Cake

Cake (C# Make) is a build automation system inspired by [Fake](http://fsharp.github.io/FAKE/).

[![TeamCity CI Build Status](http://builds.nullreferenceexception.se/app/rest/builds/buildType:id:Cake_Continuous/statusIcon)](http://builds.nullreferenceexception.se/viewType.html?buildTypeId=Cake_Continuous&guest=1)

##Roadmap

The Cake engine is pretty much done, but there are still improvements to be made. I'm still experimenting with the script API to make it as easy and intuitive as possible, so expect changes along the road.

Currently only basic MSBuild and xUnit support are implemented, but more features such as NuGet, ILMerge, NUnit, MSTest and compression support are planned. The full roadmap can be found [here](https://github.com/patriksvensson/cake/issues/milestones).

##Example

###1. Download Cake

```
C:\Project> NuGet.exe install Cake -OutputDirectory Tools -ExcludeVersion
```

###2. Create build script

```CSharp
var isTeamCityBuild = HasArgument("teamCity");
var configuration = Argument("configuration", defaultValue: "Debug");

// Access the log via script host and print some debug info.
Log.Debug("teamCity={0}", isTeamCityBuild);
Log.Debug("configuration={0}", configuration);

Task("Hello")
    .WithCriteria(isTeamCityBuild)
    .Does(c =>
{
    // Access log via context.
    c.Log.Information("Hello TeamCity!");
});

Task("Build")
    .IsDependentOn("Hello")
    .Does(c =>
{
    // Build project using MSBuild
    c.MSBuild("./src/Cake.sln", settings => 
        settings.SetPlatformTarget(PlatformTarget.x86)
            .UseToolVersion(MSBuildToolVersion.NET45)
            .WithProperty("Magic","1")
            .WithTarget("Build")
            .SetConfiguration(configuration));
});

Task("Run-Tests")
    .IsDependentOn("Build")
    .Does(c =>
{
    // Run unit tests.
    c.XUnit("./src/**/bin/" + configuration + "/*.Tests.dll");
});

// Run the script.
Run("Run-Tests");
```

###3. Run build script

```
C:\Project\Tools\Cake> Cake.exe ../../build.csx -verbosity=diagnostic -teamCity
```
{'fraction_non_alphanumeric': 0.1452599388379205, 'fraction_numerical': 0.005351681957186544, 'mean_word_length': 3.839704069050555, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1576523', 'n_tokens_mistral': 1225, 'n_tokens_neox': 1164, 'n_words': 335}