-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathRunArguments.cs
More file actions
88 lines (74 loc) · 2.72 KB
/
RunArguments.cs
File metadata and controls
88 lines (74 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.Linq;
using JenkinsNET.Console.Internal;
using System.Threading;
using System.Threading.Tasks;
using JenkinsNET.Utilities;
using SysConsole = System.Console;
namespace JenkinsNET.Console
{
internal class RunArguments : ArgumentsGroup
{
public Dictionary<string, string> JobParameters {get;}
public string JobName {get; private set;}
public bool ShowHelp {get; private set;}
public RunArguments()
{
Map("-job").ToAction(v => JobName = v);
Map("-p").ToAction(AddProperty);
Map("-help", "-?").ToAction(v => ShowHelp = v, false);
JobParameters = new Dictionary<string, string>();
}
public async Task RunAsync(CancellationToken token)
{
if (ShowHelp) {
PrintHelp();
return;
}
SysConsole.ForegroundColor = ConsoleColor.Cyan;
SysConsole.WriteLine($"Starting Job \"{JobName}\"...");
var client = new JenkinsClient {
BaseUrl = "http://localhost:8080/",
// TODO: Load from local file
};
var runner = new JenkinsJobRunner(client) {
MonitorConsoleOutput = true,
// TODO: Setup
};
runner.StatusChanged += () => {
SysConsole.ForegroundColor = ConsoleColor.White;
SysConsole.WriteLine($"[STATUS] {runner.Status}");
};
runner.ConsoleOutputChanged += text => {
SysConsole.ResetColor();
SysConsole.Write(text);
};
if (JobParameters.Any()) {
await runner.RunWithParametersAsync(JobName, JobParameters, token);
}
else {
await runner.RunAsync(JobName, token);
}
}
private void AddProperty(string property)
{
var x = property.IndexOf('=');
if (x < 0) throw new ApplicationException($"No value specified in property string '{property}'!");
var key = property.Substring(0, x);
var value = property.Substring(x + 1);
JobParameters[key] = value;
}
private static void PrintHelp()
{
SysConsole.ResetColor();
SysConsole.Write("Arguments: ");
SysConsole.ForegroundColor = ConsoleColor.DarkCyan;
SysConsole.WriteLine("run");
SysConsole.ForegroundColor = ConsoleColor.White;
SysConsole.WriteLine(" -job <name>");
SysConsole.WriteLine(" -p:<key>=<value>");
SysConsole.WriteLine(" -help | -?");
}
}
}