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.cs42
1 files changed, 19 insertions, 23 deletions
diff --git a/src/marlin.agents.shell/Program.cs b/src/marlin.agents.shell/Program.cs
index 75ea8ad..c895e8d 100644
--- a/src/marlin.agents.shell/Program.cs
+++ b/src/marlin.agents.shell/Program.cs
@@ -8,36 +8,32 @@ using marlin.core.models;
using marlin.core.models.meta;
using marlin.core.models.plan;
using marlin.core.util;
+using ProtoBuf.Grpc;
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();
-capabilities.Items.Add(KnownCapabilities.Architecture, RuntimeInformation.OSArchitecture.ToString());
-capabilities.Items.Add(KnownCapabilities.CoreCount, Environment.ProcessorCount.ToString());
-capabilities.Items.Add(KnownCapabilities.Memory, (GC.GetGCMemoryInfo().TotalAvailableMemoryBytes / (1024 * 1024)).ToString());
-var status = new AgentStatus(capabilities);
+if (args.Length == 0)
+{
+ SlaveLoop loop = new();
+ await loop.Start();
+}
+else
+{
+ string recipe = args[0];
+ string repoPath = args.Length > 1 ? args[1] : Environment.CurrentDirectory;
-AgentConfiguration config = await client.Handshake(status);
-Console.WriteLine($"IAM: {config.Name}");
-Console.WriteLine($"MCJ: {config.MaxConcurrentJobs}");
+ JobUnitOfWork uow = new(new LocalInstanceService(), repoPath, recipe);
+ await uow.Run();
+}
-while (true)
+public class LocalInstanceService : IInstanceService
{
- var job = await client.QueueNextJob();
- Console.WriteLine(job == null ? "No pending jobs." : $"Claimed job {job.Id}: {job.Recipe}");
-
- if (job != null)
+ public async Task SendLogEvent(LogEventRequest request, CallContext context = default)
{
- GitBinaryClient gitClient = new();
- var uow = new JobUnitOfWork(job, client, gitClient);
- await uow.Run();
+ TextWriter writer = request.Error ? Console.Error : Console.Out;
+ await writer.WriteLineAsync(request.Message);
}
-
- await Task.Delay(TimeSpan.FromSeconds(5));
+
+ public Task SendStatusUpdate(StatusUpdateRequest request, CallContext context = default) => Task.CompletedTask;
} \ No newline at end of file