summaryrefslogtreecommitdiff
path: root/src/marlin.agents.shell/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/marlin.agents.shell/Program.cs')
-rw-r--r--src/marlin.agents.shell/Program.cs27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/marlin.agents.shell/Program.cs b/src/marlin.agents.shell/Program.cs
index 02a0bc9..75ea8ad 100644
--- a/src/marlin.agents.shell/Program.cs
+++ b/src/marlin.agents.shell/Program.cs
@@ -1,9 +1,20 @@
using System.Runtime.InteropServices;
+using System.Threading.Channels;
+using Grpc.Net.Client;
using marlin.agents.shell;
+using marlin.core.contracts;
+using marlin.core.functional;
using marlin.core.models;
+using marlin.core.models.meta;
+using marlin.core.models.plan;
+using marlin.core.util;
+using ProtoBuf.Grpc.Client;
DotNetEnv.Env.NoClobber().TraversePath().Load();
+var jobInstanceDir = Path.Combine(CommonPaths.AgentRoot, "instance");
+Directory.CreateDirectory(jobInstanceDir);
+
var client = MarlinApiClient.FromEnvironment();
var capabilities = new CapabilitySet();
@@ -16,5 +27,17 @@ AgentConfiguration config = await client.Handshake(status);
Console.WriteLine($"IAM: {config.Name}");
Console.WriteLine($"MCJ: {config.MaxConcurrentJobs}");
-var job = await client.QueueNextJob();
-Console.WriteLine(job == null ? "No pending jobs." : $"Claimed job {job.Id}: {job.Recipe}");
+while (true)
+{
+ var job = await client.QueueNextJob();
+ Console.WriteLine(job == null ? "No pending jobs." : $"Claimed job {job.Id}: {job.Recipe}");
+
+ if (job != null)
+ {
+ GitBinaryClient gitClient = new();
+ var uow = new JobUnitOfWork(job, client, gitClient);
+ await uow.Run();
+ }
+
+ await Task.Delay(TimeSpan.FromSeconds(5));
+} \ No newline at end of file