From 0f25f011d3146be644265025050e1d000afbd980 Mon Sep 17 00:00:00 2001 From: Alireza Baloochi Date: Tue, 6 May 2025 19:31:00 +0330 Subject: [PATCH] Use `WithContainerFiles` in adminer integeration --- .../AdminerBuilderExtensions.cs | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/CommunityToolkit.Aspire.Hosting.Adminer/AdminerBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.Adminer/AdminerBuilderExtensions.cs index beb05e93e..0ce1636ae 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Adminer/AdminerBuilderExtensions.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Adminer/AdminerBuilderExtensions.cs @@ -46,27 +46,35 @@ public static IResourceBuilder AddAdminer(this IDistri } else { - var AdminerContainer = new AdminerContainerResource(name); - var AdminerContainerBuilder = builder.AddResource(AdminerContainer) + var adminerContainer = new AdminerContainerResource(name); + var adminerContainerBuilder = builder.AddResource(adminerContainer) .WithImage(AdminerContainerImageTags.Image, AdminerContainerImageTags.Tag) .WithImageRegistry(AdminerContainerImageTags.Registry) .WithHttpEndpoint(targetPort: 8080, port: port, name: AdminerContainerResource.PrimaryEndpointName) .WithUrlForEndpoint(AdminerContainerResource.PrimaryEndpointName, e => e.DisplayText = "Adminer Dashboard") .ExcludeFromManifest(); - var assembly = Assembly.GetExecutingAssembly(); - var stream = assembly.GetManifestResourceStream("CommunityToolkit.Aspire.Hosting.Adminer.login-servers.php") ?? throw new InvalidOperationException("Unable to load embedded resource 'login-servers.php'."); - var tempFile = Path.GetTempFileName(); + adminerContainerBuilder.WithContainerFiles( + destinationPath: "/var/www/html/plugins-enabled", + callback: async (context, ct) => + { + var assembly = Assembly.GetExecutingAssembly(); + using var stream = assembly.GetManifestResourceStream("CommunityToolkit.Aspire.Hosting.Adminer.login-servers.php") ?? throw new InvalidOperationException("Unable to load embedded resource 'login-servers.php'."); - using (var fileStream = new FileStream(tempFile, FileMode.Create, FileAccess.Write)) - { - stream.CopyTo(fileStream); - } + using var reader = new StreamReader(stream); + var contents = await reader.ReadToEndAsync(ct); - // Refactor this to use WithContainerFiles API when Aspire 9.2 available - AdminerContainerBuilder.WithBindMount(tempFile, "/var/www/html/plugins-enabled/login-servers.php", isReadOnly: true); + return [ + new ContainerFile + { + Contents = contents, + Name = "login-servers.php", + } + ]; + } + ); - return AdminerContainerBuilder; + return adminerContainerBuilder; } } -} +} \ No newline at end of file