Skip to content

Commit

Permalink
Using Bau Build system. And AppCI. Shields Up.
Browse files Browse the repository at this point in the history
  • Loading branch information
bchavez committed Sep 14, 2015
1 parent 7585bda commit 7f6f70b
Show file tree
Hide file tree
Showing 16 changed files with 360 additions and 205 deletions.
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![Build Status](https://bchavez.visualstudio.com/DefaultCollection/_apis/public/build/definitions/8ce74ee7-9d28-469e-8c5b-6d98f89c6398/1/badge)
[![Build status](https://ci.appveyor.com/api/projects/status/dxa14myphnlbplc6?svg=true)](https://ci.appveyor.com/project/bchavez/bogus) ![Nuget](https://img.shields.io/nuget/v/Bogus.svg) ![Users](https://img.shields.io/nuget/dt/Bogus.svg)
<img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/logo.png" align='right' />

Bogus for .NET/C#
Expand Down Expand Up @@ -374,10 +374,12 @@ public void Handlebar()
Building
--------
* Download the source code.
* Run `build.bat`.
* Run `build.cmd`.

Upon successful build, the results will be in the `\__package` directory.
The `build.bat` compiles the C# code and embeds the locales in `Source\Bogus\data`.
Upon successful build, the results will be in the `\__compile` directory.
The `build.cmd` compiles the C# code and embeds the locales in `Source\Bogus\data`.
If you want to rebuild the NuGet packages run `build.cmd pack` and the NuGet
packages will be in `__package`.

#### Rebundling Locales
If you wish to re-bundle the latest **faker.js** locales, you'll need to first:
Expand Down
10 changes: 3 additions & 7 deletions Source/Bogus.sln
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,16 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{2216B0E0-7ABC-4804-854D-3F24E59C0329}"
ProjectSection(SolutionItems) = preProject
.nuget\Bogus.nuspec = .nuget\Bogus.nuspec
.nuget\packages.config = .nuget\packages.config
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Builder", "Builder\Builder.csproj", "{86C6AA07-4C34-4A97-A72F-992F7DF6E2C4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bogus", "Bogus\Bogus.csproj", "{340A2FE9-5B52-4FD7-9D21-83CCF1621E09}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bogus.Tests", "Bogus.Tests\Bogus.Tests.csproj", "{C738E347-08EF-47DA-B531-EE99739BD759}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Github", "Github", "{5DA7A8D8-9A2C-4B8E-9F6D-B8334F3C585F}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Root", "Root", "{5CA98FAF-2EF3-4B31-8123-19BB2A14206D}"
ProjectSection(SolutionItems) = preProject
..\appveyor.yml = ..\appveyor.yml
..\build.cmd = ..\build.cmd
..\README.md = ..\README.md
EndProjectSection
EndProject
Expand Down
8 changes: 5 additions & 3 deletions Source/Bogus/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitleAttribute("Bogus Fake Data Generator for .NET")]
[assembly: AssemblyProductAttribute("Bogus")]
[assembly: AssemblyCompanyAttribute("Brian Chavez")]
[assembly: AssemblyCopyrightAttribute("Brian Chavez © 2015")]
[assembly: AssemblyVersionAttribute("3.0.0.3")]
[assembly: AssemblyFileVersion("3.0.0.3")]
[assembly: AssemblyInformationalVersion("3.0.0.3 built on 8/18/2015 3:00:40 AM UTC")]
[assembly: AssemblyVersionAttribute("3.0.1.4")]
[assembly: AssemblyFileVersion("3.0.1.4")]
[assembly: AssemblyInformationalVersion("3.0.1.4 built on 9/14/2015 6:44:29 PM UTC")]
[assembly: AssemblyTrademark("MIT License")]
[assembly: AssemblyDescriptionAttribute("http://www.github.com/bchavez/Bogus")]
[assembly: InternalsVisibleTo("Bogus.Tests")]
[assembly: ComVisible(false)]
109 changes: 109 additions & 0 deletions Source/Builder/BauBuild.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
using System;
using System.IO;
using BauCore;
using BauMSBuild;
using BauNuGet;
using Builder.Utils;
using FluentAssertions;
using FluentBuild;

namespace Builder
{
public static class BauBuild
{
//Build Tasks
public const string Build = "build";
public const string Clean = "clean";
public const string Restore = "restore";
public const string BuildInfo = "buildinfo";
public const string Pack = "pack";
public const string Push = "push";

public static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
{
Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~");
Console.WriteLine(" BUILDER ERROR ");
Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~");
Console.WriteLine(e.ExceptionObject);
Environment.Exit(1);
};

var nugetExe = FindNugetExe();

new Bau(Arguments.Parse(args))
.DependsOn(Clean, Restore, Build)
.MSBuild(Build).Desc("Invokes MSBuild to build solution")
.DependsOn(Clean, BuildInfo)
.Do(msb =>
{
msb.ToolsVersion = "14.0";
msb.Solution = Projects.SolutionFile.ToString();
msb.Properties = new
{
Configuration = "Release",
OutDir = Folders.CompileOutput
};
msb.Targets = new[] { "Rebuild" };
})
.Task(BuildInfo).Desc("Creates dynamic AssemblyInfos for projects")
.Do(() =>
{
Task.CreateAssemblyInfo.Language.CSharp(aid =>
{
Projects.BogusProject.AssemblyInfo(aid);
var outputPath = Projects.BogusProject.Folder.SubFolder("Properties").File("AssemblyInfo.cs");
Console.WriteLine($"Creating AssemblyInfo file: {outputPath}");
aid.OutputPath(outputPath);
});
})
.Task(Clean).Desc("Cleans project files")
.Do(() =>
{
Console.WriteLine($"Removing {Folders.CompileOutput}");
Folders.CompileOutput.Wipe();
Directory.CreateDirectory(Folders.CompileOutput.ToString());
Console.WriteLine($"Removing {Folders.Package}");
Folders.Package.Wipe();
Directory.CreateDirectory(Folders.Package.ToString());
})
.NuGet(Pack).Desc("Packs NuGet packages")
.DependsOn(Build).Do(ng =>
{
ng.Pack(Projects.BogusProject.NugetSpec.ToString(),
p =>
{
p.BasePath = Folders.CompileOutput.ToString();
p.Version = BuildContext.FullVersion;
p.Symbols = true;
p.OutputDirectory = Folders.Package.ToString();
})
.WithNuGetExePathOverride(nugetExe.FullName);
})
.NuGet(Push).Desc("Pushes NuGet packages")
.DependsOn(Pack).Do(ng =>
{
ng.Push(Projects.BogusProject.NugetNupkg.ToString())
.WithNuGetExePathOverride(nugetExe.FullName);
})
.NuGet(Restore).Desc("Restores NuGet packages")
.Do(ng =>
{
ng.Restore(Projects.SolutionFile.ToString())
.WithNuGetExePathOverride(nugetExe.FullName);
})

.Run();
}

private static FileInfo FindNugetExe()
{
Directory.SetCurrentDirectory(Folders.Lib.ToString());
var nugetExe = NuGetFileFinder.FindFile();
nugetExe.Should().NotBeNull();
Directory.SetCurrentDirectory(Folders.WorkingFolder.ToString());
return nugetExe;
}
}
}
42 changes: 26 additions & 16 deletions Source/Builder/BuildSettings.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System;
using Builder.Extensions;
using Builder.Utils;
using FluentBuild;
using FluentBuild.AssemblyInfoBuilding;
using FluentFs.Core;
Expand All @@ -12,42 +12,52 @@ public class Folders
public static readonly Directory CompileOutput = WorkingFolder.SubFolder( "__compile" );
public static readonly Directory Package = WorkingFolder.SubFolder( "__package" );
public static readonly Directory Source = WorkingFolder.SubFolder( "source" );
public static readonly Directory Builder = Source.SubFolder("Builder");

public static readonly Directory Lib = Source.SubFolder( "packages" );
public static readonly Directory Lib = Source.SubFolder( "packages" );
}

public class Projects
public class BuildContext
{
public static readonly string FullVersion = Environment.GetEnvironmentVariable("BUILD_VERSION").Trim() ?? "0.0.0.0";
public static readonly string Version = FullVersion.WithoutPreReleaseName();
public static readonly DateTime BuildDate = DateTime.UtcNow;
}

public class Projects
{
private static void GlobalAssemblyInfo(IAssemblyInfoDetails aid)
{
aid.Company( "Brian Chavez" )
.Copyright( "Brian Chavez © " + DateTime.UtcNow.Year )
.Version( Properties.CommandLineProperties.Version() )
.FileVersion( Properties.CommandLineProperties.Version() )
.InformationalVersion( "{0} built on {1} UTC".With( Properties.CommandLineProperties.Version(), DateTime.UtcNow ) )
.Copyright( "Brian Chavez © " + BuildContext.BuildDate.Year)
.Version( BuildContext.Version )
.FileVersion( BuildContext.Version )
.InformationalVersion( $"{BuildContext.FullVersion} built on {BuildContext.BuildDate} UTC" )
.Trademark( "MIT License" )
.Description( "http://www.github.com/bchavez/Bogus" )
.ComVisible(false);
.AddCustomAttribute("System.Runtime.CompilerServices", "InternalsVisibleTo", true, "Bogus.Tests")
.ComVisible(false);
}

public static readonly File SolutionFile = Folders.Source.File( "Bogus.sln" );

public class BogusProject
{
public static readonly Directory Folder = Folders.Source.SubFolder( "Bogus" );
public static readonly File ProjectFile = Folder.File( "Bogus.csproj" );
public static readonly Directory OutputDirectory = Folders.CompileOutput.SubFolder( "Bogus" );
public static readonly File OutputDll = OutputDirectory.File( "Bogus.dll" );
public static readonly Directory PackageDir = Folders.Package.SubFolder( "Bogus" );
public const string Name = "Bogus";
public static readonly Directory Folder = Folders.Source.SubFolder( Name );
public static readonly File ProjectFile = Folder.File( $"{Name}.csproj" );
public static readonly Directory OutputDirectory = Folders.CompileOutput.SubFolder( Name );
public static readonly File OutputDll = OutputDirectory.File( $"{Name}.dll" );
public static readonly Directory PackageDir = Folders.Package.SubFolder( Name );

public static readonly File NugetSpec = Folders.Source.SubFolder(".nuget").File( "Bogus.nuspec" );
public static readonly File NugetNupkg = Folders.Package.File( "Bogus.{0}.nupkg".With( Properties.CommandLineProperties.Version() ) );
public static readonly File NugetSpec = Folders.Builder.SubFolder("NuGet").File( $"{Name}.nuspec" );
public static readonly File NugetNupkg = Folders.Package.File( $"{Name}.{BuildContext.FullVersion}.nupkg");

public static readonly Action<IAssemblyInfoDetails> AssemblyInfo =
i =>
{
i.Title("Bogus Fake Data Generator for .NET")
.Product("Bogus");
.Product(Name);

GlobalAssemblyInfo(i);
};
Expand Down
44 changes: 39 additions & 5 deletions Source/Builder/Builder.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{86C6AA07-4C34-4A97-A72F-992F7DF6E2C4}</ProjectGuid>
<OutputType>Library</OutputType>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Builder</RootNamespace>
<AssemblyName>Builder</AssemblyName>
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand All @@ -29,15 +30,42 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>Builder.BauBuild</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="Bau, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Bau.0.1.0-beta09\lib\net45\Bau.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Bau.MSBuild, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Bau.MSBuild.0.1.0-beta01\lib\net45\Bau.MSBuild.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Bau.NuGet, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Bau.NuGet.0.1.0-alpha001\lib\net45\Bau.NuGet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Fasterflect, Version=2.1.3.0, Culture=neutral, PublicKeyToken=38d18473284c1ca7, processorArchitecture=MSIL">
<HintPath>..\packages\fasterflect.2.1.3\lib\net40\Fasterflect.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="fb, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\FluentBuild.1.2.0.0\lib\net40\fb.exe</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Fluent.IO, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\FluentPath.1.1.0\lib\Net4\Fluent.IO.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\packages\FluentAssertions.4.0.0\lib\net45\FluentAssertions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\packages\FluentAssertions.4.0.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentBuild, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\FluentBuild.1.2.0.0\lib\net40\FluentBuild.dll</HintPath>
<Private>True</Private>
Expand All @@ -55,14 +83,19 @@
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Core, Version=2.8.60318.667, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\NuGet.Core.2.8.5\lib\net40-Client\NuGet.Core.dll</HintPath>
<HintPath>..\packages\Nuget.Core.2.8.5\lib\net40-Client\NuGet.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ScriptCs.Contracts, Version=0.9.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ScriptCs.Contracts.0.9.0\lib\net45\ScriptCs.Contracts.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
Expand All @@ -72,15 +105,16 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BauBuild.cs" />
<Compile Include="BuildSettings.cs" />
<Compile Include="Tasks\BuildTasks.cs" />
<Compile Include="Utils\BuildUtil.cs" />
<Compile Include="Extensions\Extensions.cs" />
<Compile Include="Utils\Extensions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils\XDocUtil.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="NuGet\Bogus.nuspec" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
Expand Down
28 changes: 0 additions & 28 deletions Source/Builder/Extensions/Extensions.cs

This file was deleted.

Loading

0 comments on commit 7f6f70b

Please sign in to comment.