Skip to content

Commit

Permalink
add IBuildLight and refactor Program to use appropriate type
Browse files Browse the repository at this point in the history
  • Loading branch information
ducas committed Apr 18, 2013
1 parent 8ec7f7e commit 8180549
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 61 deletions.
35 changes: 35 additions & 0 deletions TeamFlash/BuildLight.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
namespace TeamFlash
{
class BuildLight : IBuildLight
{
private readonly Monitor monitor = new Monitor();

public void Success()
{
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, true, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
}

public void Warning()
{
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, true, false);
}

public void Fail()
{
monitor.SetLed(DelcomBuildIndicator.REDLED, true, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
}

public void Off()
{
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
}
}
}
15 changes: 15 additions & 0 deletions TeamFlash/IBuildLight.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TeamFlash
{
interface IBuildLight
{
void Success();
void Warning();
void Fail();
void Off();
}
}
32 changes: 32 additions & 0 deletions TeamFlash/Linux/BuildLight.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
namespace TeamFlash.Linux
{
class BuildLight : IBuildLight
{
static void SetLightColor(int color)
{
DelcomBuildIndicator.OpenDevice();
DelcomBuildIndicator.SetColor(color);
DelcomBuildIndicator.CloseDevice();
}

public void Success()
{
SetLightColor(DelcomBuildIndicator.Green);
}

public void Warning()
{
SetLightColor(DelcomBuildIndicator.Blue);
}

public void Fail()
{
SetLightColor(DelcomBuildIndicator.Red);
}

public void Off()
{
SetLightColor(DelcomBuildIndicator.Off);
}
}
}
73 changes: 12 additions & 61 deletions TeamFlash/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,13 @@ static void Main()
? new string[0]
: teamFlashConfig.BuildTypeIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToArray();

var monitor = new Monitor();
TurnOffLights(monitor);
#if __MonoCS__
var buildLight = new Linux.BuildLight();
#else
var buildLight = new BuildLight();
#endif

buildLight.Off();

while (!Console.KeyAvailable)
{
Expand All @@ -39,28 +44,27 @@ static void Main()
switch (lastBuildStatus)
{
case BuildStatus.Unavailable:
TurnOffLights(monitor);
buildLight.Off();
Console.WriteLine(DateTime.Now.ToShortTimeString() + " Server unavailable");
break;
case BuildStatus.Passed:
TurnOnSuccessLight(monitor);
buildLight.Success();
Console.WriteLine(DateTime.Now.ToShortTimeString() + " Passed");
break;
case BuildStatus.Investigating:
TurnOnWarningLight(monitor);
buildLight.Warning();
Console.WriteLine(DateTime.Now.ToShortTimeString() + " Investigating");
break;
case BuildStatus.Failed:
TurnOnFailLight(monitor);
buildLight.Fail();
Console.WriteLine(DateTime.Now.ToShortTimeString() + " Failed");
break;
}

Wait();
}

TurnOffLights(monitor);

buildLight.Off();
}

static TeamFlashConfig LoadConfig()
Expand Down Expand Up @@ -133,59 +137,6 @@ static void Wait()
}
}

#if __MonoCS__
static void SetLightColor(int color)
{
Linux.DelcomBuildIndicator.OpenDevice();
Linux.DelcomBuildIndicator.SetColor(color);
Linux.DelcomBuildIndicator.CloseDevice();
}
#endif

static void TurnOnSuccessLight(Monitor monitor)
{
#if __MonoCS__
SetLightColor(Linux.DelcomBuildIndicator.Green);
#else
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, true, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
#endif
}

static void TurnOnWarningLight(Monitor monitor)
{
#if __MonoCS__
SetLightColor(Linux.DelcomBuildIndicator.Blue);
#else
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, true, false);
#endif
}

static void TurnOnFailLight(Monitor monitor)
{
#if __MonoCS__
SetLightColor(Linux.DelcomBuildIndicator.Red);
#else
monitor.SetLed(DelcomBuildIndicator.REDLED, true, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
#endif
}

static void TurnOffLights(Monitor monitor)
{
#if __MonoCS__
SetLightColor(Linux.DelcomBuildIndicator.Off);
#else
monitor.SetLed(DelcomBuildIndicator.REDLED, false, false);
monitor.SetLed(DelcomBuildIndicator.GREENLED, false, false);
monitor.SetLed(DelcomBuildIndicator.BLUELED, false, false);
#endif
}

static BuildStatus RetrieveBuildStatus(
string serverUrl, string username, string password,
IEnumerable<string> buildTypeIds)
Expand Down
3 changes: 3 additions & 0 deletions TeamFlash/TeamFlash.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,11 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BuildLight.cs" />
<Compile Include="BuildStatus.cs" />
<Compile Include="DelcomBuildIndicator.cs" />
<Compile Include="IBuildLight.cs" />
<Compile Include="Linux\BuildLight.cs" />
<Compile Include="Linux\DelcomBuildIndicator.cs" />
<Compile Include="Monitor.cs" />
<Compile Include="Program.cs" />
Expand Down

0 comments on commit 8180549

Please sign in to comment.