From d7a0635447d00212eb468611ca23550fe637a8b5 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Wed, 9 Apr 2025 04:59:13 +0000 Subject: [PATCH] Mark DistributedApplicationOperation.Inspect as experimental, and imrpove AddPublisher API. --- src/Aspire.Hosting.Azure/AzurePublisherExtensions.cs | 8 ++++---- .../DockerComposePublisherExtensions.cs | 8 ++++---- .../KubernetesPublisherExtensions.cs | 8 ++++---- .../DistributedApplicationExecutionContext.cs | 3 +++ src/Aspire.Hosting/DistributedApplicationOperation.cs | 3 +++ .../PublisherDistributedApplicationBuilderExtensions.cs | 4 +++- tests/Aspire.Hosting.Tests/OperationModesTests.cs | 2 ++ 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/Aspire.Hosting.Azure/AzurePublisherExtensions.cs b/src/Aspire.Hosting.Azure/AzurePublisherExtensions.cs index 1f22bb68a23..4cab3815997 100644 --- a/src/Aspire.Hosting.Azure/AzurePublisherExtensions.cs +++ b/src/Aspire.Hosting.Azure/AzurePublisherExtensions.cs @@ -18,9 +18,9 @@ public static class AzurePublisherExtensions /// The name of the publisher used when using the Aspire CLI. /// Callback to configure Azure Container Apps publisher options. [Experimental("ASPIREPUBLISHERS001", UrlFormat = "https://aka.ms/dotnet/aspire/diagnostics#{0}")] - public static void AddAzurePublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddAzurePublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) { - builder.AddPublisher(name, configureOptions); + return builder.AddPublisher(name, configureOptions); } /// @@ -29,8 +29,8 @@ public static void AddAzurePublisher(this IDistributedApplicationBuilder builder /// The . /// Callback to configure Azure Container Apps publisher options. [Experimental("ASPIREAZURE001", UrlFormat = "https://aka.ms/dotnet/aspire/diagnostics#{0}")] - public static void AddAzurePublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddAzurePublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) { - builder.AddPublisher("azure", configureOptions); + return builder.AddPublisher("azure", configureOptions); } } \ No newline at end of file diff --git a/src/Aspire.Hosting.Docker/DockerComposePublisherExtensions.cs b/src/Aspire.Hosting.Docker/DockerComposePublisherExtensions.cs index 0e85a876050..8f0f4504f93 100644 --- a/src/Aspire.Hosting.Docker/DockerComposePublisherExtensions.cs +++ b/src/Aspire.Hosting.Docker/DockerComposePublisherExtensions.cs @@ -18,9 +18,9 @@ public static class DockerComposePublisherExtensions /// The . /// The name of the publisher used when using the Aspire CLI. /// Callback to configure Docker Compose publisher options. - public static void AddDockerComposePublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddDockerComposePublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) { - builder.AddPublisher(name, configureOptions); + return builder.AddPublisher(name, configureOptions); } /// @@ -28,8 +28,8 @@ public static void AddDockerComposePublisher(this IDistributedApplicationBuilder /// /// The . /// Callback to configure Docker Compose publisher options. - public static void AddDockerComposePublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddDockerComposePublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) { - builder.AddPublisher("docker-compose", configureOptions); + return builder.AddPublisher("docker-compose", configureOptions); } } diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesPublisherExtensions.cs b/src/Aspire.Hosting.Kubernetes/KubernetesPublisherExtensions.cs index 9f233dedfdd..3bb086210b3 100644 --- a/src/Aspire.Hosting.Kubernetes/KubernetesPublisherExtensions.cs +++ b/src/Aspire.Hosting.Kubernetes/KubernetesPublisherExtensions.cs @@ -18,9 +18,9 @@ public static class KubernetesPublisherExtensions /// The . /// The name of the publisher used when using the Aspire CLI. /// Callback to configure Kubernetes publisher options. - public static void AddKubernetesPublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddKubernetesPublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) { - builder.AddPublisher(name, configureOptions); + return builder.AddPublisher(name, configureOptions); } /// @@ -28,8 +28,8 @@ public static void AddKubernetesPublisher(this IDistributedApplicationBuilder bu /// /// The . /// Callback to configure Kubernetes publisher options. - public static void AddKubernetesPublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddKubernetesPublisher(this IDistributedApplicationBuilder builder, Action? configureOptions = null) { - builder.AddPublisher("kubernetes", configureOptions); + return builder.AddPublisher("kubernetes", configureOptions); } } \ No newline at end of file diff --git a/src/Aspire.Hosting/DistributedApplicationExecutionContext.cs b/src/Aspire.Hosting/DistributedApplicationExecutionContext.cs index 119d0ffecdd..b230701616b 100644 --- a/src/Aspire.Hosting/DistributedApplicationExecutionContext.cs +++ b/src/Aspire.Hosting/DistributedApplicationExecutionContext.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; + namespace Aspire.Hosting; /// @@ -89,5 +91,6 @@ public IServiceProvider ServiceProvider /// /// Returns true if the current operation is inspecting. /// + [Experimental("ASPIREPUBLISHERS001")] public bool IsInspectMode => Operation == DistributedApplicationOperation.Inspect; } diff --git a/src/Aspire.Hosting/DistributedApplicationOperation.cs b/src/Aspire.Hosting/DistributedApplicationOperation.cs index 6cdecb8d363..80b5b8fc178 100644 --- a/src/Aspire.Hosting/DistributedApplicationOperation.cs +++ b/src/Aspire.Hosting/DistributedApplicationOperation.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; + namespace Aspire.Hosting; /// @@ -21,5 +23,6 @@ public enum DistributedApplicationOperation /// /// AppHost is being run for the purpose of inspecting the application model from the launcher. /// + [Experimental("ASPIREPUBLISHERS001")] Inspect } diff --git a/src/Aspire.Hosting/PublisherDistributedApplicationBuilderExtensions.cs b/src/Aspire.Hosting/PublisherDistributedApplicationBuilderExtensions.cs index c5c0bd0d795..f879ccc8938 100644 --- a/src/Aspire.Hosting/PublisherDistributedApplicationBuilderExtensions.cs +++ b/src/Aspire.Hosting/PublisherDistributedApplicationBuilderExtensions.cs @@ -21,7 +21,7 @@ public static class PublisherDistributedApplicationBuilderExtensions /// The name of the publisher. /// Callback to configure options for the publisher. [Experimental("ASPIREPUBLISHERS001")] - public static void AddPublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) + public static IDistributedApplicationBuilder AddPublisher(this IDistributedApplicationBuilder builder, string name, Action? configureOptions = null) where TPublisher : class, IDistributedApplicationPublisher where TPublisherOptions : class { @@ -43,5 +43,7 @@ public static void AddPublisher(this IDistributed { configureOptions?.Invoke(options); }); + + return builder; } } \ No newline at end of file diff --git a/tests/Aspire.Hosting.Tests/OperationModesTests.cs b/tests/Aspire.Hosting.Tests/OperationModesTests.cs index 5485846f872..9f9d0799e95 100644 --- a/tests/Aspire.Hosting.Tests/OperationModesTests.cs +++ b/tests/Aspire.Hosting.Tests/OperationModesTests.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +#pragma warning disable ASPIREPUBLISHERS001 + using Aspire.Hosting.Backchannel; using Aspire.Hosting.Tests.Utils; using Aspire.Hosting.Utils;