replace deprecated aspire class
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Aspire.Hosting.Lifecycle;
|
||||
using Aspire.Hosting.Eventing;
|
||||
using Aspire.Hosting.Lifecycle;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
@@ -45,11 +46,11 @@ public static class GodotExtensions
|
||||
//.WithEnvironment("OTEL_EXPORTER_OTLP_ENDPOINT", Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT") ?? throw new InvalidOperationException("OTEL_EXPORTER_OTLP_ENDPOINT environment variable is not set"));
|
||||
|
||||
// Add a lifecycle hook to handle building before startup
|
||||
builder.Services.AddSingleton<IDistributedApplicationLifecycleHook>(sp =>
|
||||
new GodotBuildHook(
|
||||
builder.Services.AddSingleton<IDistributedApplicationEventingSubscriber>(sp =>
|
||||
new GodotBuildEventSubscriber(
|
||||
projectPath,
|
||||
projectDirectory,
|
||||
sp.GetRequiredService<ILogger<GodotBuildHook>>()));
|
||||
sp.GetRequiredService<ILogger<GodotBuildEventSubscriber>>()));
|
||||
|
||||
return godotResource;
|
||||
}
|
||||
@@ -83,23 +84,21 @@ public static class GodotExtensions
|
||||
throw new PlatformNotSupportedException("Current platform is not supported for Godot execution.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lifecycle hook to build the Godot project before launching
|
||||
/// </summary>
|
||||
private class GodotBuildHook : IDistributedApplicationLifecycleHook
|
||||
private class GodotBuildEventSubscriber : IDistributedApplicationEventingSubscriber
|
||||
{
|
||||
private readonly string _projectPath;
|
||||
private readonly string _projectDirectory;
|
||||
private readonly ILogger<GodotBuildHook> _logger;
|
||||
private readonly ILogger<GodotBuildEventSubscriber> _logger;
|
||||
|
||||
public GodotBuildHook(string projectPath, string projectDirectory, ILogger<GodotBuildHook> logger)
|
||||
public GodotBuildEventSubscriber(string projectPath, string projectDirectory, ILogger<GodotBuildEventSubscriber> logger)
|
||||
{
|
||||
_projectPath = projectPath;
|
||||
_projectDirectory = projectDirectory;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task BeforeStartAsync(DistributedApplicationModel appModel, CancellationToken cancellationToken = default)
|
||||
public Task SubscribeAsync(IDistributedApplicationEventing eventing, DistributedApplicationExecutionContext executionContext, CancellationToken cancellationToken)
|
||||
{
|
||||
eventing.Subscribe<BeforeStartEvent>(async (@event, ct) =>
|
||||
{
|
||||
_logger.LogInformation("Building Godot project: {ProjectPath}", _projectPath);
|
||||
|
||||
@@ -137,7 +136,7 @@ public static class GodotExtensions
|
||||
buildProcess.Start();
|
||||
buildProcess.BeginOutputReadLine();
|
||||
buildProcess.BeginErrorReadLine();
|
||||
await buildProcess.WaitForExitAsync(cancellationToken);
|
||||
await buildProcess.WaitForExitAsync(ct);
|
||||
|
||||
if (buildProcess.ExitCode != 0)
|
||||
{
|
||||
@@ -146,10 +145,8 @@ public static class GodotExtensions
|
||||
}
|
||||
|
||||
_logger.LogInformation("Successfully built Godot project: {ProjectPath}", _projectPath);
|
||||
}
|
||||
});
|
||||
|
||||
public Task AfterStartAsync(DistributedApplicationModel appModel, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user