Skip to content

Commit 3b005aa

Browse files
committed
Add ping command to console client, improve help text
1 parent 872789b commit 3b005aa

File tree

6 files changed

+68
-35
lines changed

6 files changed

+68
-35
lines changed

IntegrationEngine.ConsoleClient/GetSubOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class GetSubOptions
1010
[Option('e', "endpoint", Required = true, HelpText="Endpoint to consume.")]
1111
public Endpoint Resource { get; set; }
1212

13-
[Option('i', "id", HelpText="Id of resource to consume.")]
13+
[Option('i', "id", HelpText="Id of endpoint to consume.")]
1414
public string Id { get; set; }
1515
}
1616
}

IntegrationEngine.ConsoleClient/IntegrationEngine.ConsoleClient.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
<ErrorReport>prompt</ErrorReport>
2525
<WarningLevel>4</WarningLevel>
2626
<Prefer32Bit>false</Prefer32Bit>
27-
<Commandlineparameters>get -e CronTrigger</Commandlineparameters>
2827
<ConsolePause>false</ConsolePause>
2928
</PropertyGroup>
3029
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -57,6 +56,7 @@
5756
<Link>Properties\SharedAssemblyInfo.cs</Link>
5857
</Compile>
5958
<Compile Include="GetSubOptions.cs" />
59+
<Compile Include="PingSubOptions.cs" />
6060
</ItemGroup>
6161
<ItemGroup>
6262
<ProjectReference Include="..\IntegrationEngine.Client\IntegrationEngine.Client.csproj">

IntegrationEngine.ConsoleClient/Options.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using CommandLine;
22
using System;
33
using System.Collections.Generic;
4+
using System.Linq;
45
using IntegrationEngine.Client;
56
using System.Text;
67
using System.Reflection;
@@ -12,9 +13,12 @@ public class Options
1213
[Option('u', "url", Required = false, HelpText = "Web API url.")]
1314
public string WebApiUrl { get; set; }
1415

15-
[VerbOption("get", HelpText = "Consume a resource.")]
16+
[VerbOption("get", HelpText = "Consume an endpoint.")]
1617
public GetSubOptions GetVerb { get; set; }
1718

19+
[VerbOption("ping", HelpText = "Ping the InEngine server Web API.")]
20+
public PingSubOptions PingVerb { get; set; }
21+
1822
[HelpOption]
1923
public string GetUsage()
2024
{
@@ -25,6 +29,15 @@ public string GetUsage()
2529
var usage = new StringBuilder();
2630
usage.AppendLine(string.Format("InEngine.NET Console Client {0}", version));
2731
usage.AppendLine("Project website: http://inengine.net");
32+
var verbAttributes =
33+
this.GetType()
34+
.GetProperties()
35+
.Where(prop => prop.IsDefined(typeof(VerbOptionAttribute), false));
36+
foreach (var verbAttribute in verbAttributes) {
37+
var attributeInstances = (VerbOptionAttribute[])verbAttribute.GetCustomAttributes(typeof(VerbOptionAttribute), false);
38+
foreach (var instance in attributeInstances)
39+
usage.AppendLine(string.Format("{0} - {1}", instance.LongName, instance.HelpText));
40+
}
2841
return usage.ToString();
2942
}
3043
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using CommandLine;
2+
using IntegrationEngine.Model;
3+
using System;
4+
using IntegrationEngine.Client;
5+
6+
namespace IntegrationEngine.ConsoleClient
7+
{
8+
public class PingSubOptions
9+
{}
10+
}

IntegrationEngine.ConsoleClient/Program.cs

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@ class Program
1515
static void Main(string[] args)
1616
{
1717
var options = new Options();
18-
if (args.Length <= 1) {
19-
Console.WriteLine(options.GetUsage());
20-
Environment.Exit(CommandLine.Parser.DefaultExitCodeFail);
21-
}
2218
var invokedVerb = "";
2319
var invokedVerbInstance = new object();
24-
if (!CommandLine.Parser.Default.ParseArguments(args, options, (verb, subOptions) => {
20+
if (args == null ||
21+
args.Length == 0 ||
22+
!CommandLine.Parser.Default.ParseArguments(args, options, (verb, subOptions) => {
2523
invokedVerb = verb;
2624
invokedVerbInstance = subOptions;
2725
}))
@@ -36,24 +34,38 @@ static void Main(string[] args)
3634

3735
if (invokedVerb == "get") {
3836
var getSubOptions = (GetSubOptions)invokedVerbInstance;
39-
switch (getSubOptions.Resource)
40-
{
41-
case Endpoint.CronTrigger:
42-
ResolveResult(client.GetCollection<CronTrigger>());
43-
break;
44-
case Endpoint.SimpleTrigger:
45-
ResolveResult(client.GetCollection<SimpleTrigger>());
46-
break;
47-
case Endpoint.JobType:
48-
ResolveResult(client.GetCollection<JobType>());
49-
break;
50-
case Endpoint.TimeZone:
51-
ResolveResult(client.GetCollection<IntegrationEngine.Model.TimeZone>());
52-
break;
53-
case Endpoint.HealthStatus:
54-
ResolveResult(client.GetHealthStatus());
55-
break;
56-
}
37+
if (getSubOptions.Id != null)
38+
switch (getSubOptions.Resource)
39+
{
40+
case Endpoint.CronTrigger:
41+
ResolveResult(client.Get<CronTrigger>(getSubOptions.Id));
42+
break;
43+
case Endpoint.SimpleTrigger:
44+
ResolveResult(client.Get<SimpleTrigger>(getSubOptions.Id));
45+
break;
46+
}
47+
else
48+
switch (getSubOptions.Resource)
49+
{
50+
case Endpoint.CronTrigger:
51+
ResolveResult(client.GetCollection<CronTrigger>());
52+
break;
53+
case Endpoint.SimpleTrigger:
54+
ResolveResult(client.GetCollection<SimpleTrigger>());
55+
break;
56+
case Endpoint.JobType:
57+
ResolveResult(client.GetCollection<JobType>());
58+
break;
59+
case Endpoint.TimeZone:
60+
ResolveResult(client.GetCollection<IntegrationEngine.Model.TimeZone>());
61+
break;
62+
case Endpoint.HealthStatus:
63+
ResolveResult(client.GetHealthStatus());
64+
break;
65+
}
66+
}
67+
if (invokedVerb == "ping") {
68+
Console.WriteLine(client.Ping());
5769
}
5870
}
5971

IntegrationEngine.userprefs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
<Properties StartupItem="IntegrationEngine.ConsoleHost/IntegrationEngine.ConsoleHost.csproj">
1+
<Properties StartupItem="IntegrationEngine.ConsoleClient/IntegrationEngine.ConsoleClient.csproj">
22
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
3-
<MonoDevelop.Ide.Workbench ActiveDocument="IntegrationEngine.ConsoleClient/Program.cs">
3+
<MonoDevelop.Ide.Workbench ActiveDocument="IntegrationEngine.ConsoleClient/Options.cs">
44
<Files>
5-
<File FileName="IntegrationEngine.ConsoleClient/Program.cs" Line="1" Column="1" />
6-
<File FileName="IntegrationEngine.ConsoleClient/Options.cs" Line="1" Column="1" />
7-
<File FileName="IntegrationEngine.ConsoleClient/GetSubOptions.cs" Line="25" Column="25" />
8-
<File FileName="IntegrationEngine.Client/InEngineClient.cs" Line="10" Column="10" />
9-
<File FileName="IntegrationEngine.ConsoleHost/Program.cs" Line="20" Column="20" />
10-
<File FileName="IntegrationEngine/MessageQueue/MessageQueueConnection.cs" Line="64" Column="64" />
5+
<File FileName="IntegrationEngine.ConsoleClient/Program.cs" Line="41" Column="41" />
6+
<File FileName="IntegrationEngine.ConsoleClient/Options.cs" Line="25" Column="25" />
7+
<File FileName="IntegrationEngine.ConsoleClient/PingSubOptions.cs" Line="6" Column="6" />
118
</Files>
129
<Pads>
1310
<Pad Id="MonoDevelop.NUnit.TestPad">
@@ -18,7 +15,8 @@
1815
<MonoDevelop.Ide.DebuggingService.Breakpoints>
1916
<BreakpointStore>
2017
<Breakpoint file="/Users/ethanhann/Projects/IntegrationEngine/IntegrationEngine.Core/Storage/ElasticsearchRepository.cs" line="34" column="1" />
21-
<Breakpoint file="/Users/ethanhann/Projects/IntegrationEngine/IntegrationEngine.ConsoleClient/Program.cs" line="17" column="1" />
18+
<Breakpoint file="/Users/ethanhann/Projects/IntegrationEngine/IntegrationEngine.ConsoleClient/Options.cs" line="31" column="1" />
19+
<Breakpoint file="/Users/ethanhann/Projects/IntegrationEngine/IntegrationEngine.ConsoleClient/Options.cs" line="39" column="1" />
2220
</BreakpointStore>
2321
</MonoDevelop.Ide.DebuggingService.Breakpoints>
2422
<MonoDevelop.Ide.DebuggingService.PinnedWatches />

0 commit comments

Comments
 (0)