diff --git a/playground/polyglot/Java/Aspire.Hosting.Azure/ValidationAppHost/AppHost.java b/playground/polyglot/Java/Aspire.Hosting.Azure/ValidationAppHost/AppHost.java index 27e1b57f5a3..ddb56b64070 100644 --- a/playground/polyglot/Java/Aspire.Hosting.Azure/ValidationAppHost/AppHost.java +++ b/playground/polyglot/Java/Aspire.Hosting.Azure/ValidationAppHost/AppHost.java @@ -73,11 +73,11 @@ void main() throws Exception { identity.publishAsExisting("identity-existing", "rg-identity"); identity.publishAsExistingFromParameters(existingName, existingResourceGroup); identity.asExisting(existingName, existingResourceGroup); - container.withEnvironmentFromOutput("INFRA_URL", infrastructureOutput); - container.withEnvironmentFromKeyVaultSecret("SECRET_FROM_IDENTITY", identity); + container.withEnvironment("INFRA_URL", infrastructureOutput); + container.withEnvironment("SECRET_FROM_IDENTITY", identity); container.withAzureUserAssignedIdentity(identity); - executable.withEnvironmentFromOutput("INFRA_URL", infrastructureOutput); - executable.withEnvironmentFromKeyVaultSecret("SECRET_FROM_IDENTITY", identity); + executable.withEnvironment("INFRA_URL", infrastructureOutput); + executable.withEnvironment("SECRET_FROM_IDENTITY", identity); executable.withAzureUserAssignedIdentity(identity); builder.build().run(); } diff --git a/playground/polyglot/Java/Aspire.Hosting/ValidationAppHost/AppHost.java b/playground/polyglot/Java/Aspire.Hosting/ValidationAppHost/AppHost.java index 201380007ae..6e29c263266 100644 --- a/playground/polyglot/Java/Aspire.Hosting/ValidationAppHost/AppHost.java +++ b/playground/polyglot/Java/Aspire.Hosting/ValidationAppHost/AppHost.java @@ -19,9 +19,9 @@ void main() throws Exception { var builtConnectionString = builder.addConnectionStringBuilder("customcs", (connectionStringBuilder) -> { var _isEmpty = connectionStringBuilder.isEmpty(); connectionStringBuilder.appendLiteral("Host="); connectionStringBuilder.appendValueProvider(endpoint); connectionStringBuilder.appendLiteral(";Key="); connectionStringBuilder.appendValueProvider(secretParam); var _builtExpression = connectionStringBuilder.build(); }); builtConnectionString.withConnectionProperty("Host", expr); builtConnectionString.withConnectionPropertyValue("Mode", "Development"); - container.withEnvironmentEndpoint("MY_ENDPOINT", endpoint); - container.withEnvironmentParameter("MY_PARAM", configParam); - container.withEnvironmentConnectionString("MY_CONN", builtConnectionString); + container.withEnvironment("MY_ENDPOINT", endpoint); + container.withEnvironment("MY_PARAM", configParam); + container.withEnvironment("MY_CONN", builtConnectionString); builtConnectionString.withConnectionProperty("Endpoint", expr); builtConnectionString.withConnectionPropertyValue("Protocol", "https"); container.excludeFromManifest(); diff --git a/playground/polyglot/Python/Aspire.Hosting.Azure/ValidationAppHost/apphost.py b/playground/polyglot/Python/Aspire.Hosting.Azure/ValidationAppHost/apphost.py index bfe6767024d..7691545aa0b 100644 --- a/playground/polyglot/Python/Aspire.Hosting.Azure/ValidationAppHost/apphost.py +++ b/playground/polyglot/Python/Aspire.Hosting.Azure/ValidationAppHost/apphost.py @@ -72,10 +72,10 @@ identity.publish_as_existing() identity.publish_as_existing_from_parameters() identity.as_existing() - container.with_environment_from_output() - container.with_environment_from_key_vault_secret() + container.with_environment("INFRA_URL", infrastructure_output) + container.with_environment("SECRET_FROM_IDENTITY", identity) container.with_azure_user_assigned_identity() - executable.with_environment_from_output() - executable.with_environment_from_key_vault_secret() + executable.with_environment("INFRA_URL", infrastructure_output) + executable.with_environment("SECRET_FROM_IDENTITY", identity) executable.with_azure_user_assigned_identity() builder.run() diff --git a/playground/polyglot/Python/Aspire.Hosting/ValidationAppHost/apphost.py b/playground/polyglot/Python/Aspire.Hosting/ValidationAppHost/apphost.py index 4abc3bc31b2..865878f2499 100644 --- a/playground/polyglot/Python/Aspire.Hosting/ValidationAppHost/apphost.py +++ b/playground/polyglot/Python/Aspire.Hosting/ValidationAppHost/apphost.py @@ -33,12 +33,12 @@ built_connection_string = builder.add_connection_string_builder("connection-string", lambda *_args, **_kwargs: None) built_connection_string.with_connection_property("Key", "Value") built_connection_string.with_connection_property_value("Key", "Value") - # withEnvironmentEndpoint - container.with_environment_endpoint("KEY", None) - # withEnvironmentParameter - container.with_environment_parameter("KEY", None) - # withEnvironmentConnectionString - container.with_environment_connection_string("KEY", None) + # withEnvironment - EndpointReference + container.with_environment("KEY", endpoint) + # withEnvironment - ParameterResource + container.with_environment("KEY", builder.add_parameter("param")) + # withEnvironment - connection string resource + container.with_environment("KEY", built_connection_string) # withConnectionProperty — with ReferenceExpression built_connection_string.with_connection_property("Key", "Value") # withConnectionPropertyValue — with string diff --git a/playground/polyglot/TypeScript/Aspire.Hosting.Azure/ValidationAppHost/apphost.ts b/playground/polyglot/TypeScript/Aspire.Hosting.Azure/ValidationAppHost/apphost.ts index 26c1b2f02f2..c4981e3ec2b 100644 --- a/playground/polyglot/TypeScript/Aspire.Hosting.Azure/ValidationAppHost/apphost.ts +++ b/playground/polyglot/TypeScript/Aspire.Hosting.Azure/ValidationAppHost/apphost.ts @@ -89,12 +89,12 @@ await identity.publishAsExisting("identity-existing", "rg-identity"); await identity.publishAsExistingFromParameters(existingName, existingResourceGroup); await identity.asExisting(existingName, existingResourceGroup); -await container.withEnvironmentFromOutput("INFRA_URL", infrastructureOutput); -await container.withEnvironmentFromKeyVaultSecret("SECRET_FROM_IDENTITY", identity); +await container.withEnvironment("INFRA_URL", infrastructureOutput); +await container.withEnvironment("SECRET_FROM_IDENTITY", identity); await container.withAzureUserAssignedIdentity(identity); -await executable.withEnvironmentFromOutput("INFRA_URL", infrastructureOutput); -await executable.withEnvironmentFromKeyVaultSecret("SECRET_FROM_IDENTITY", identity); +await executable.withEnvironment("INFRA_URL", infrastructureOutput); +await executable.withEnvironment("SECRET_FROM_IDENTITY", identity); await executable.withAzureUserAssignedIdentity(identity); await builder.build().run(); diff --git a/playground/polyglot/TypeScript/Aspire.Hosting/ValidationAppHost/apphost.ts b/playground/polyglot/TypeScript/Aspire.Hosting/ValidationAppHost/apphost.ts index 4ecf0adeae4..c2c26d6fb86 100644 --- a/playground/polyglot/TypeScript/Aspire.Hosting/ValidationAppHost/apphost.ts +++ b/playground/polyglot/TypeScript/Aspire.Hosting/ValidationAppHost/apphost.ts @@ -73,14 +73,14 @@ await builtConnectionString.withConnectionPropertyValue("Mode", "Development"); // ResourceBuilderExtensions.cs — NEW exports on ContainerResource // =================================================================== -// withEnvironmentEndpoint -await container.withEnvironmentEndpoint("MY_ENDPOINT", endpoint); +// withEnvironment - EndpointReference +await container.withEnvironment("MY_ENDPOINT", endpoint); -// withEnvironmentParameter -await container.withEnvironmentParameter("MY_PARAM", configParam); +// withEnvironment - ParameterResource +await container.withEnvironment("MY_PARAM", configParam); -// withEnvironmentConnectionString -await container.withEnvironmentConnectionString("MY_CONN", builtConnectionString); +// withEnvironment - connection string resource +await container.withEnvironment("MY_CONN", builtConnectionString); // withConnectionProperty — with ReferenceExpression await builtConnectionString.withConnectionProperty("Endpoint", expr); diff --git a/src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultSecretReference.cs b/src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultSecretReference.cs index 6654505d28c..dfc0da70cee 100644 --- a/src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultSecretReference.cs +++ b/src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultSecretReference.cs @@ -10,7 +10,7 @@ namespace Aspire.Hosting.Azure; /// /// The name of the secret. /// The Azure Key Vault resource. -internal sealed class AzureKeyVaultSecretReference(string secretName, AzureKeyVaultResource azureKeyVaultResource) : IAzureKeyVaultSecretReference, IValueProvider, IManifestExpressionProvider +internal sealed class AzureKeyVaultSecretReference(string secretName, AzureKeyVaultResource azureKeyVaultResource) : IAzureKeyVaultSecretReference { /// /// Gets the name of the secret. diff --git a/src/Aspire.Hosting.Azure/AzureBicepResource.cs b/src/Aspire.Hosting.Azure/AzureBicepResource.cs index b944b8711db..42f923c9818 100644 --- a/src/Aspire.Hosting.Azure/AzureBicepResource.cs +++ b/src/Aspire.Hosting.Azure/AzureBicepResource.cs @@ -573,7 +573,7 @@ public void Dispose() /// The name of the KeyVault secret. /// The . [Obsolete("BicepSecretOutputReference is no longer supported. Use IAzureKeyVaultResource instead.")] -public sealed class BicepSecretOutputReference(string name, AzureBicepResource resource) : IManifestExpressionProvider, IValueProvider, IValueWithReferences +public sealed class BicepSecretOutputReference(string name, AzureBicepResource resource) : IExpressionValue, IValueWithReferences { /// /// Name of the KeyVault secret. @@ -628,7 +628,7 @@ public string? Value /// The name of the output /// The . [AspireExport(ExposeProperties = true)] -public sealed class BicepOutputReference(string name, AzureBicepResource resource) : IManifestExpressionProvider, IValueProvider, IValueWithReferences, IEquatable +public sealed class BicepOutputReference(string name, AzureBicepResource resource) : IExpressionValue, IValueWithReferences, IEquatable { /// /// Name of the output. diff --git a/src/Aspire.Hosting.Azure/AzureBicepResourceExtensions.cs b/src/Aspire.Hosting.Azure/AzureBicepResourceExtensions.cs index feb46a28a53..4f8ddfe3563 100644 --- a/src/Aspire.Hosting.Azure/AzureBicepResourceExtensions.cs +++ b/src/Aspire.Hosting.Azure/AzureBicepResourceExtensions.cs @@ -78,16 +78,29 @@ public static BicepSecretOutputReference GetSecretOutput(this IResourceBuilderThe name of the environment variable. /// The reference to the bicep output. /// An . - [AspireExport("withEnvironmentFromOutput", Description = "Sets an environment variable from a Bicep output reference")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, BicepOutputReference bicepOutputReference) where T : IResourceWithEnvironment { - builder.WithReferenceRelationship(bicepOutputReference.Resource); + return builder.WithEnvironment(name, (IExpressionValue)bicepOutputReference); + } - return builder.WithEnvironment(ctx => - { - ctx.EnvironmentVariables[name] = bicepOutputReference; - }); + // Keep these ATS-only aliases for backward compatibility with existing polyglot app hosts. + // Remove them once callers have migrated to the unified withEnvironment(...) export. + /// + /// Obsolete ATS alias for . + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The reference to the Bicep output. + /// An . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentFromOutput", Description = "Sets an environment variable from a Bicep output reference")] + internal static IResourceBuilder WithEnvironmentFromOutputShim(this IResourceBuilder builder, string name, BicepOutputReference bicepOutputReference) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(name, bicepOutputReference); } /// @@ -116,14 +129,27 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// The name of the environment variable. /// The reference to the key vault secret. /// An . - [AspireExport("withEnvironmentFromKeyVaultSecret", Description = "Sets an environment variable from an Azure Key Vault secret reference")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, IAzureKeyVaultSecretReference secretReference) where T : IResourceWithEnvironment { - return builder.WithEnvironment(ctx => - { - ctx.EnvironmentVariables[name] = secretReference; - }); + return builder.WithEnvironment(name, (IExpressionValue)secretReference); + } + + /// + /// Obsolete ATS alias for . + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The key vault secret reference. + /// An . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentFromKeyVaultSecret", Description = "Sets an environment variable from an Azure Key Vault secret reference")] + internal static IResourceBuilder WithEnvironmentFromKeyVaultSecretShim(this IResourceBuilder builder, string name, IAzureKeyVaultSecretReference secretReference) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(name, secretReference); } /// diff --git a/src/Aspire.Hosting.Azure/IAzureKeyVaultSecretReference.cs b/src/Aspire.Hosting.Azure/IAzureKeyVaultSecretReference.cs index d3ab69e325f..215b217b49c 100644 --- a/src/Aspire.Hosting.Azure/IAzureKeyVaultSecretReference.cs +++ b/src/Aspire.Hosting.Azure/IAzureKeyVaultSecretReference.cs @@ -9,7 +9,7 @@ namespace Aspire.Hosting.Azure; /// Represents a reference to a secret in an Azure Key Vault resource. /// [AspireExport] -public interface IAzureKeyVaultSecretReference : IValueProvider, IManifestExpressionProvider, IValueWithReferences +public interface IAzureKeyVaultSecretReference : IExpressionValue, IValueWithReferences { /// /// Gets the name of the secret. diff --git a/src/Aspire.Hosting.CodeGeneration.Java/AtsJavaCodeGenerator.cs b/src/Aspire.Hosting.CodeGeneration.Java/AtsJavaCodeGenerator.cs index 3c1b88482b8..8b1ad20e520 100644 --- a/src/Aspire.Hosting.CodeGeneration.Java/AtsJavaCodeGenerator.cs +++ b/src/Aspire.Hosting.CodeGeneration.Java/AtsJavaCodeGenerator.cs @@ -756,6 +756,11 @@ private List CreateMethodParameters(IEnumerable ReferenceEquals(parameter, unionParameter) ? $"{MapInputTypeToJava(unionType, unionParameter.IsOptional || unionParameter.IsNullable)} {ToCamelCase(parameter.Name)}" : $"{MapParameterToJava(parameter)} {ToCamelCase(parameter.Name)}"))}) {{"); if (returnInfo.HasReturn) { @@ -1126,6 +1145,40 @@ private void GenerateUnionOverloadsWithOptions( } } + private List CreateUnionMethodParameters( + List parameters, + AtsParameterInfo unionParameter, + AtsTypeRef unionType) + { + var result = new List(parameters.Count); + + foreach (var parameter in parameters) + { + var parameterName = ToCamelCase(parameter.Name); + + if (!ReferenceEquals(parameter, unionParameter)) + { + var (parameterResourceWrapperType, parameterResourceWrapperParameterType) = GetResourceBuilderWrapperType(parameter); + result.Add(new JavaMethodParameter( + MapParameterToJava(parameter), + parameterName, + parameterResourceWrapperType, + parameterResourceWrapperParameterType)); + continue; + } + + var parameterType = MapInputTypeToJava(unionType, unionParameter.IsOptional || unionParameter.IsNullable); + var (resourceWrapperType, resourceWrapperParameterType) = GetResourceBuilderWrapperType(parameterType); + result.Add(new JavaMethodParameter( + parameterType, + parameterName, + resourceWrapperType, + resourceWrapperParameterType)); + } + + return result; + } + private void GenerateOptionsOverloads( AtsCapabilityInfo capability, JavaCapabilityReturnInfo returnInfo, diff --git a/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs b/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs index 8d2b152a7e7..2ec709d97d1 100644 --- a/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs +++ b/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs @@ -103,6 +103,7 @@ public sealed class AtsTypeScriptCodeGenerator : ICodeGenerator // Mapping of typeId -> wrapper class name for all generated wrapper types // Used to resolve parameter types to wrapper classes instead of handle types private readonly Dictionary _wrapperClassNames = new(StringComparer.Ordinal); + private readonly Dictionary _typeRefsById = new(StringComparer.Ordinal); // Set of type IDs that have Promise wrappers (types with chainable methods) // Used to determine return types for methods @@ -251,6 +252,11 @@ private string MapInputTypeToTypeScript(AtsTypeRef? typeRef) { if (IsInterfaceHandleType(typeRef)) { + if (TryMapInterfaceInputTypeToTypeScript(typeRef!) is { } interfaceInputType) + { + return interfaceInputType; + } + return "ResourceBuilderBase"; } @@ -272,9 +278,78 @@ private string MapParameterToTypeScript(AtsParameterInfo param) return GenerateCallbackTypeSignature(param.CallbackParameters, param.CallbackReturnType); } + if (param.Type?.Category == AtsTypeCategory.Union && param.Type.UnionTypes is { Count: > 0 }) + { + return string.Join(" | ", param.Type.UnionTypes + .Select(MapInputTypeToTypeScript) + .Distinct()); + } + return MapInputTypeToTypeScript(param.Type); } + private string? TryMapInterfaceInputTypeToTypeScript(AtsTypeRef typeRef) + { + List? assignableWrapperTypes = null; + var includesResourceBuilder = false; + + foreach (var candidateTypeRef in _typeRefsById.Values) + { + if (!IsAssignableToInterface(candidateTypeRef, typeRef.TypeId) || + !_wrapperClassNames.TryGetValue(candidateTypeRef.TypeId, out var wrapperClassName)) + { + continue; + } + + if (candidateTypeRef.IsResourceBuilder) + { + includesResourceBuilder = true; + continue; + } + + assignableWrapperTypes ??= []; + assignableWrapperTypes.Add(wrapperClassName); + } + + if (!includesResourceBuilder && assignableWrapperTypes is not { Count: > 0 }) + { + return null; + } + + var typeNames = new List(); + if (includesResourceBuilder) + { + typeNames.Add("ResourceBuilderBase"); + } + + if (assignableWrapperTypes is { Count: > 0 }) + { + typeNames.AddRange(assignableWrapperTypes + .Distinct(StringComparer.Ordinal) + .OrderBy(static n => n, StringComparer.Ordinal)); + } + + return string.Join(" | ", typeNames); + } + + private static bool IsAssignableToInterface(AtsTypeRef candidateTypeRef, string interfaceTypeId) + { + if (string.Equals(candidateTypeRef.TypeId, interfaceTypeId, StringComparison.Ordinal)) + { + return true; + } + + foreach (var implementedInterface in candidateTypeRef.ImplementedInterfaces) + { + if (IsAssignableToInterface(implementedInterface, interfaceTypeId)) + { + return true; + } + } + + return candidateTypeRef.BaseType is not null && IsAssignableToInterface(candidateTypeRef.BaseType, interfaceTypeId); + } + /// /// Checks if a type reference is an interface handle type. /// Interface handles need union types to accept wrapper classes. @@ -486,6 +561,7 @@ private string GenerateAspireSdk(AtsContext context) // Build wrapper class name mapping for type resolution BEFORE generating options interfaces // This allows parameter types to use wrapper class names instead of handle types _wrapperClassNames.Clear(); + _typeRefsById.Clear(); _typesWithPromiseWrappers.Clear(); _generatedOptionsInterfaces.Clear(); _optionsInterfacesToGenerate.Clear(); @@ -494,12 +570,14 @@ private string GenerateAspireSdk(AtsContext context) foreach (var builder in resourceBuilders) { _wrapperClassNames[builder.TypeId] = builder.BuilderClassName; + _typeRefsById[builder.TypeId] = builder.TargetType!; // All resource builders get Promise wrappers _typesWithPromiseWrappers.Add(builder.TypeId); } foreach (var typeClass in typeClasses) { _wrapperClassNames[typeClass.TypeId] = DeriveClassName(typeClass.TypeId); + _typeRefsById[typeClass.TypeId] = typeClass.TargetType!; // Type classes with methods get Promise wrappers if (HasChainableMethods(typeClass)) { diff --git a/src/Aspire.Hosting.SqlServer/api/Aspire.Hosting.SqlServer.ats.txt b/src/Aspire.Hosting.SqlServer/api/Aspire.Hosting.SqlServer.ats.txt index 31fbe131e07..7caf46bef63 100644 --- a/src/Aspire.Hosting.SqlServer/api/Aspire.Hosting.SqlServer.ats.txt +++ b/src/Aspire.Hosting.SqlServer/api/Aspire.Hosting.SqlServer.ats.txt @@ -1,26 +1,26 @@ # Aspire Type System Capabilities # Generated by: aspire sdk dump --format ci -# Diagnostics -warning: Method 'addConnectionString' has collisions (Aspire.Hosting/addConnectionString, Aspire.Hosting/addConnectionStringExpression). 'Aspire.Hosting/addConnectionStringExpression' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addConnectionStringExpression] -warning: Method 'addContainerRegistry' has collisions (Aspire.Hosting/addContainerRegistry, Aspire.Hosting/addContainerRegistryFromString). 'Aspire.Hosting/addContainerRegistryFromString' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addContainerRegistryFromString] -warning: Method 'addExternalService' has collisions (Aspire.Hosting/addExternalService, Aspire.Hosting/addExternalServiceParameter, Aspire.Hosting/addExternalServiceUri). 'Aspire.Hosting/addExternalServiceParameter' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addExternalServiceParameter] -warning: Method 'addExternalService' has collisions (Aspire.Hosting/addExternalService, Aspire.Hosting/addExternalServiceParameter, Aspire.Hosting/addExternalServiceUri). 'Aspire.Hosting/addExternalServiceUri' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addExternalServiceUri] -warning: Method 'addParameter' has collisions (Aspire.Hosting/addParameter, Aspire.Hosting/addParameterWithValue). 'Aspire.Hosting/addParameterWithValue' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addParameterWithValue] - # Handle Types Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerDatabaseResource [ExposeProperties] Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.CSharpAppResource +Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue [interface] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource [interface] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs [interface] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString [interface] @@ -32,8 +32,11 @@ Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ConnectionStringResource @@ -48,12 +51,21 @@ Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent [int Aspire.Hosting/Aspire.Hosting.ExternalServiceResource Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder [interface] Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles [interface] +Aspire.Hosting/Aspire.Hosting.IUserSecretsManager [interface, ExposeProperties, ExposeMethods] +Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep [interface] +Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask [interface] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep [ExposeProperties] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary [ExposeMethods] Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions [ExposeProperties] Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfiguration [interface] -Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment [interface] +Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection [interface, ExposeProperties] +Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment [interface, ExposeProperties] +Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger [interface] +Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILoggerFactory [interface] System.ComponentModel/System.IServiceProvider [interface] System.Private.CoreLib/System.Threading.CancellationToken @@ -106,16 +118,28 @@ enum:Aspire.Hosting.OtlpProtocol = Grpc | HttpProtobuf | HttpJson enum:System.Net.Sockets.ProtocolType = IP | IPv6HopByHopOptions | Unspecified | Icmp | Igmp | Ggp | IPv4 | Tcp | Pup | Udp | Idp | IPv6 | IPv6RoutingHeader | IPv6FragmentHeader | IPSecEncapsulatingSecurityPayload | IPSecAuthenticationHeader | IcmpV6 | IPv6NoNextHeader | IPv6DestinationOptions | ND | Raw | Ipx | Spx | SpxII | Unknown # Capabilities +Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.model(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/appendFormatted(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, value: string, format?: string) -> void Aspire.Hosting.ApplicationModel/appendLiteral(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, value: string) -> void Aspire.Hosting.ApplicationModel/appendValueProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, valueProvider: any, format?: string) -> void +Aspire.Hosting.ApplicationModel/BeforeResourceStartedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/BeforeResourceStartedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/BeforeStartEvent.model(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.ApplicationModel/BeforeStartEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/build(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.args(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/List Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setExecutionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext, value: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext +Aspire.Hosting.ApplicationModel/ConnectionStringAvailableEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ConnectionStringAvailableEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/EndpointReference.endpointName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string +Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.exists(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, enabledValue: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression, disabledValue: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/EndpointReference.host(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string @@ -123,6 +147,7 @@ Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated(context: Aspire.Ho Aspire.Hosting.ApplicationModel/EndpointReference.isHttp(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.isHttps(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.port(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> number +Aspire.Hosting.ApplicationModel/EndpointReference.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting.ApplicationModel/EndpointReference.scheme(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string Aspire.Hosting.ApplicationModel/EndpointReference.setErrorMessage(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference Aspire.Hosting.ApplicationModel/EndpointReference.targetPort(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> number @@ -134,14 +159,34 @@ Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression(cont Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environmentVariables(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Dict Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> cancellationToken Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> string +Aspire.Hosting.ApplicationModel/ExecuteCommandContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setCancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setResourceName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext +Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setServiceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext +Aspire.Hosting.ApplicationModel/getValue(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression, cancellationToken: cancellationToken) -> string Aspire.Hosting.ApplicationModel/getValueAsync(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, cancellationToken?: cancellationToken) -> string +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder) -> boolean +Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/List Aspire.Hosting.ApplicationModel/SqlServerDatabaseResource.connectionStringExpression(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerDatabaseResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/SqlServerDatabaseResource.databaseName(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerDatabaseResource) -> string @@ -155,30 +200,60 @@ Aspire.Hosting.ApplicationModel/SqlServerServerResource.entrypoint(context: Aspi Aspire.Hosting.ApplicationModel/SqlServerServerResource.host(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression Aspire.Hosting.ApplicationModel/SqlServerServerResource.jdbcConnectionString(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/SqlServerServerResource.name(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> string +Aspire.Hosting.ApplicationModel/SqlServerServerResource.passwordParameter(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting.ApplicationModel/SqlServerServerResource.port(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression Aspire.Hosting.ApplicationModel/SqlServerServerResource.primaryEndpoint(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference Aspire.Hosting.ApplicationModel/SqlServerServerResource.setEntrypoint(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource, value: string) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource +Aspire.Hosting.ApplicationModel/SqlServerServerResource.setPasswordParameter(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource Aspire.Hosting.ApplicationModel/SqlServerServerResource.setShellExecution(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource, value: boolean) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource Aspire.Hosting.ApplicationModel/SqlServerServerResource.shellExecution(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> boolean Aspire.Hosting.ApplicationModel/SqlServerServerResource.uriExpression(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/SqlServerServerResource.userNameReference(context: Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression +Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.setServiceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe(context: Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing, subscription: Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription) -> void Aspire.Hosting.Pipelines/dependsOn(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, stepName: string) -> void Aspire.Hosting.Pipelines/getStepsByTag(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, tag: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[] +Aspire.Hosting.Pipelines/PipelineConfigurationContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineConfigurationContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineConfigurationContext.setModel(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext +Aspire.Hosting.Pipelines/PipelineConfigurationContext.setServices(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext Aspire.Hosting.Pipelines/PipelineConfigurationContext.setSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[]) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext Aspire.Hosting.Pipelines/PipelineConfigurationContext.steps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[] +Aspire.Hosting.Pipelines/PipelineContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> cancellationToken +Aspire.Hosting.Pipelines/PipelineContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.Pipelines/PipelineContext.logger(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.Pipelines/PipelineContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext, value: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineContext.summary(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary Aspire.Hosting.Pipelines/PipelineStep.dependsOnSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List Aspire.Hosting.Pipelines/PipelineStep.description(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> string Aspire.Hosting.Pipelines/PipelineStep.name(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> string Aspire.Hosting.Pipelines/PipelineStep.requiredBySteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List +Aspire.Hosting.Pipelines/PipelineStep.resource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting.Pipelines/PipelineStep.setDependsOnSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setDescription(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setName(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setRequiredBySteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep +Aspire.Hosting.Pipelines/PipelineStep.setResource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setTags(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.tags(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> cancellationToken Aspire.Hosting.Pipelines/PipelineStepContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.Pipelines/PipelineStepContext.logger(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.Pipelines/PipelineStepContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep +Aspire.Hosting.Pipelines/PipelineStepContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineStepContext.setPipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext +Aspire.Hosting.Pipelines/PipelineStepContext.setReportingStep(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext +Aspire.Hosting.Pipelines/PipelineStepContext.summary(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setPipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setResource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext +Aspire.Hosting.Pipelines/PipelineSummary.add(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary, key: string, value: string) -> void Aspire.Hosting.Pipelines/requiredBy(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, stepName: string) -> void Aspire.Hosting.SqlServer/addDatabase(name: string, databaseName?: string) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerDatabaseResource Aspire.Hosting.SqlServer/addSqlServer(name: string, password?: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource, port?: number) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource @@ -189,16 +264,22 @@ Aspire.Hosting.SqlServer/withHostPort(port: number) -> Aspire.Hosting.SqlServer/ Aspire.Hosting.SqlServer/withPassword(password: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting.SqlServer/Aspire.Hosting.ApplicationModel.SqlServerServerResource Aspire.Hosting/addConnectionString(name: string, environmentVariableName?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString Aspire.Hosting/addConnectionStringBuilder(name: string, connectionStringBuilder: callback) -> Aspire.Hosting/Aspire.Hosting.ConnectionStringResource +Aspire.Hosting/addConnectionStringExpression(name: string, connectionStringExpression: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ConnectionStringResource Aspire.Hosting/addContainer(name: string, image: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/addContainerRegistry(name: string, endpoint: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource, repository?: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource +Aspire.Hosting/addContainerRegistryFromString(name: string, endpoint: string, repository?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource Aspire.Hosting/addCSharpApp(name: string, path: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/addCSharpAppWithOptions(name: string, path: string, configure: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CSharpAppResource Aspire.Hosting/addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/addDotnetTool(name: string, packageId: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource Aspire.Hosting/addExecutable(name: string, command: string, workingDirectory: string, args: string[]) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource Aspire.Hosting/addExternalService(name: string, url: string) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addExternalServiceParameter(name: string, urlParameter: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addExternalServiceUri(name: string, uri: uri) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addMarkdown(key: string, markdownString: string) -> void Aspire.Hosting/addParameter(name: string, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource +Aspire.Hosting/addParameterWithValue(name: string, value: string, publishValueAsDefault?: boolean, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/addProject(name: string, projectPath: string, launchProfileName: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/addProjectWithOptions(name: string, projectPath: string, configure: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/asHttp2Service() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints @@ -206,8 +287,15 @@ Aspire.Hosting/build(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicat Aspire.Hosting/clearContainerFilesSources() -> Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles Aspire.Hosting/completeLog(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> void Aspire.Hosting/completeLogByName(resourceName: string) -> void +Aspire.Hosting/completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken) -> void Aspire.Hosting/createBuilder() -> Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder Aspire.Hosting/createBuilderWithOptions() -> Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder +Aspire.Hosting/createLogger(categoryName: string) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting/createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask +Aspire.Hosting/createTask(statusText: string, cancellationToken?: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask Aspire.Hosting/Dict.clear() -> void Aspire.Hosting/Dict.count() -> number Aspire.Hosting/Dict.get(key: string) -> any @@ -222,20 +310,39 @@ Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode(context: Asp Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> boolean Aspire.Hosting/DistributedApplicationExecutionContext.operation(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> enum:Aspire.Hosting.DistributedApplicationOperation Aspire.Hosting/DistributedApplicationExecutionContext.publisherName(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> string +Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext, value: string) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext Aspire.Hosting/excludeFromManifest() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/excludeFromMcp() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/exists(key: string) -> boolean +Aspire.Hosting/findResourceByName(name: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/getChildren() -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection[] +Aspire.Hosting/getConfiguration() -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfiguration Aspire.Hosting/getConfigValue(key: string) -> string Aspire.Hosting/getConnectionString(name: string) -> string +Aspire.Hosting/getDistributedApplicationModel() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel Aspire.Hosting/getEndpoint(name: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference -Aspire.Hosting/getEnvironmentName() -> string -Aspire.Hosting/getRequiredService(typeId: string) -> any +Aspire.Hosting/getEventing() -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing +Aspire.Hosting/getLoggerFactory() -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILoggerFactory +Aspire.Hosting/getOrSetSecret(resourceBuilder: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, name: string, value: string) -> void +Aspire.Hosting/getResourceLoggerService() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService Aspire.Hosting/getResourceName() -> string -Aspire.Hosting/getService(typeId: string) -> any +Aspire.Hosting/getResourceNotificationService() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting/getResources() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource[] +Aspire.Hosting/getSection(key: string) -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection +Aspire.Hosting/getUserSecretsManager() -> Aspire.Hosting/Aspire.Hosting.IUserSecretsManager Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> string +Aspire.Hosting/IDistributedApplicationBuilder.environment(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment Aspire.Hosting/IDistributedApplicationBuilder.eventing(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing Aspire.Hosting/IDistributedApplicationBuilder.executionContext(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.IUserSecretsManager Aspire.Hosting/isDevelopment() -> boolean +Aspire.Hosting/isEnvironment(environmentName: string) -> boolean +Aspire.Hosting/isProduction() -> boolean +Aspire.Hosting/isStaging() -> boolean +Aspire.Hosting/IUserSecretsManager.filePath(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager) -> string +Aspire.Hosting/IUserSecretsManager.isAvailable(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager) -> boolean +Aspire.Hosting/IUserSecretsManager.trySetSecret(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager, name: string, value: string) -> boolean Aspire.Hosting/List.add(item: any) -> void Aspire.Hosting/List.clear() -> void Aspire.Hosting/List.get(index: number) -> any @@ -249,7 +356,15 @@ Aspire.Hosting/log(level: string, message: string) -> void Aspire.Hosting/logDebug(message: string) -> void Aspire.Hosting/logError(message: string) -> void Aspire.Hosting/logInformation(message: string) -> void +Aspire.Hosting/logStep(level: string, message: string) -> void +Aspire.Hosting/logStepMarkdown(level: string, markdownString: string) -> void Aspire.Hosting/logWarning(message: string) -> void +Aspire.Hosting/onBeforeResourceStarted(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onConnectionStringAvailable(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString +Aspire.Hosting/onInitializeResource(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onResourceEndpointsAllocated(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints +Aspire.Hosting/onResourceReady(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onResourceStopped(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> boolean Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> boolean Aspire.Hosting/ProjectResourceOptions.launchProfileName(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> string @@ -264,7 +379,12 @@ Aspire.Hosting/publishProjectAsDockerFileWithConfigure(configure?: callback) -> Aspire.Hosting/publishResourceUpdate(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, state?: string, stateStyle?: string) -> void Aspire.Hosting/publishWithContainerFiles(source: Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles, destinationPath: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource Aspire.Hosting/run(context: Aspire.Hosting/Aspire.Hosting.DistributedApplication, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/saveStateJson(json: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/subscribeAfterResourcesCreated(callback: callback) -> Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription +Aspire.Hosting/subscribeBeforeStart(callback: callback) -> Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription Aspire.Hosting/tryGetResourceState(resourceName: string) -> Aspire.Hosting/Aspire.Hosting.Ats.ResourceEventDto +Aspire.Hosting/updateTask(statusText: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken) -> void Aspire.Hosting/waitFor(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/waitForCompletion(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, exitCode?: number) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/waitForDependencies(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> void @@ -276,7 +396,6 @@ Aspire.Hosting/waitForStartWithBehavior(dependency: Aspire.Hosting/Aspire.Hostin Aspire.Hosting/waitForWithBehavior(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, waitBehavior: enum:Aspire.Hosting.ApplicationModel.WaitBehavior) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/withArgs(args: string[]) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs Aspire.Hosting/withArgsCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs -Aspire.Hosting/withArgsCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs Aspire.Hosting/withBindMount(source: string, target: string, isReadOnly?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withBuildArg(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withBuildSecret(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource @@ -297,9 +416,8 @@ Aspire.Hosting/withDockerfileBaseImage(buildImage?: string, runtimeImage?: strin Aspire.Hosting/withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: enum:System.Net.Sockets.ProtocolType) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting/withEndpointProxySupport(proxyEnabled: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withEntrypoint(entrypoint: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource -Aspire.Hosting/withEnvironment(name: string, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment +Aspire.Hosting/withEnvironment(name: string, value: string|Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression|Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference|Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource|Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString|Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment -Aspire.Hosting/withEnvironmentCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentConnectionString(envVarName: string, resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentEndpoint(name: string, endpointReference: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentExpression(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment @@ -327,7 +445,6 @@ Aspire.Hosting/withOtlpExporterProtocol(protocol: enum:Aspire.Hosting.OtlpProtoc Aspire.Hosting/withoutHttpsCertificate() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withParentRelationship(parent: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withPipelineConfiguration(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource -Aspire.Hosting/withPipelineConfigurationAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withPipelineStepFactory(stepName: string, callback: callback, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withReference(source: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, connectionName?: string, optional?: boolean, name?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withReferenceEndpoint(endpointReference: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment @@ -348,6 +465,5 @@ Aspire.Hosting/withUrlExpression(url: Aspire.Hosting/Aspire.Hosting.ApplicationM Aspire.Hosting/withUrlForEndpoint(endpointName: string, callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withUrlForEndpointFactory(endpointName: string, callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting/withUrlsCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource -Aspire.Hosting/withUrlsCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withVolume(target: string, name?: string, isReadOnly?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withWorkingDirectory(workingDirectory: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource diff --git a/src/Aspire.Hosting/ApplicationModel/ConnectionStringReference.cs b/src/Aspire.Hosting/ApplicationModel/ConnectionStringReference.cs index 9d464b9cd6e..4fe74a5765e 100644 --- a/src/Aspire.Hosting/ApplicationModel/ConnectionStringReference.cs +++ b/src/Aspire.Hosting/ApplicationModel/ConnectionStringReference.cs @@ -5,7 +5,7 @@ namespace Aspire.Hosting.ApplicationModel; /// /// Represents a reference to a connection string. /// -public class ConnectionStringReference(IResourceWithConnectionString resource, bool optional) : IManifestExpressionProvider, IValueProvider, IValueWithReferences +public class ConnectionStringReference(IResourceWithConnectionString resource, bool optional) : IExpressionValue, IValueWithReferences { /// /// The resource that the connection string is referencing. diff --git a/src/Aspire.Hosting/ApplicationModel/EndpointReference.cs b/src/Aspire.Hosting/ApplicationModel/EndpointReference.cs index 9ced43243de..6a262773367 100644 --- a/src/Aspire.Hosting/ApplicationModel/EndpointReference.cs +++ b/src/Aspire.Hosting/ApplicationModel/EndpointReference.cs @@ -11,7 +11,7 @@ namespace Aspire.Hosting.ApplicationModel; /// [AspireExport(ExposeProperties = true)] [DebuggerDisplay("Resource = {Resource.Name}, EndpointName = {EndpointName}, IsAllocated = {IsAllocated}")] -public sealed class EndpointReference : IManifestExpressionProvider, IValueProvider, IValueWithReferences +public sealed class EndpointReference : IExpressionValue, IValueWithReferences { // A reference to the endpoint annotation if it exists. private EndpointAnnotation? _endpointAnnotation; @@ -298,7 +298,7 @@ public EndpointReference(IResourceWithEndpoints owner, string endpointName): thi /// The property of the endpoint. [AspireExport(ExposeProperties = true)] [DebuggerDisplay("EndpointExpression = {ValueExpression}, Property = {Property}, Endpoint = {Endpoint.EndpointName}")] -public class EndpointReferenceExpression(EndpointReference endpointReference, EndpointProperty property) : IManifestExpressionProvider, IValueProvider, IValueWithReferences +public class EndpointReferenceExpression(EndpointReference endpointReference, EndpointProperty property) : IExpressionValue, IValueWithReferences { /// /// Gets the . diff --git a/src/Aspire.Hosting/ApplicationModel/HostUrl.cs b/src/Aspire.Hosting/ApplicationModel/HostUrl.cs index 1a3d4a5fc49..4824864db45 100644 --- a/src/Aspire.Hosting/ApplicationModel/HostUrl.cs +++ b/src/Aspire.Hosting/ApplicationModel/HostUrl.cs @@ -11,7 +11,7 @@ namespace Aspire.Hosting.ApplicationModel; /// Represents a URL on the host machine. When referenced in a container resource, localhost will be /// replaced with the configured container host name. /// -public record HostUrl(string Url) : IValueProvider, IManifestExpressionProvider +public record HostUrl(string Url) : IExpressionValue { // Goes into the manifest as a value, not an expression string IManifestExpressionProvider.ValueExpression => Url; diff --git a/src/Aspire.Hosting/ApplicationModel/IExpressionValue.cs b/src/Aspire.Hosting/ApplicationModel/IExpressionValue.cs new file mode 100644 index 00000000000..f3722b7558e --- /dev/null +++ b/src/Aspire.Hosting/ApplicationModel/IExpressionValue.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Aspire.Hosting.ApplicationModel; + +/// +/// Represents a value that provides both a runtime value and a manifest expression. +/// +/// +/// Expression values can be used anywhere both a runtime value and a publish-time +/// manifest expression are needed. +/// +[AspireExport] +public interface IExpressionValue : IValueProvider, IManifestExpressionProvider +{ +} diff --git a/src/Aspire.Hosting/ApplicationModel/IResourceWithConnectionString.cs b/src/Aspire.Hosting/ApplicationModel/IResourceWithConnectionString.cs index c60dfb1f1a3..4891764af09 100644 --- a/src/Aspire.Hosting/ApplicationModel/IResourceWithConnectionString.cs +++ b/src/Aspire.Hosting/ApplicationModel/IResourceWithConnectionString.cs @@ -6,7 +6,7 @@ namespace Aspire.Hosting.ApplicationModel; /// /// Represents a resource that has a connection string associated with it. /// -public interface IResourceWithConnectionString : IResource, IManifestExpressionProvider, IValueProvider, IValueWithReferences +public interface IResourceWithConnectionString : IResource, IExpressionValue, IValueWithReferences { /// /// Gets the connection string associated with the resource. diff --git a/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs b/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs index e5f57fb85cd..02268583968 100644 --- a/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs +++ b/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs @@ -9,7 +9,7 @@ namespace Aspire.Hosting.ApplicationModel; /// /// Represents a parameter resource. /// -public class ParameterResource : Resource, IManifestExpressionProvider, IValueProvider +public class ParameterResource : Resource, IExpressionValue { private readonly Lazy _lazyValue; private readonly Func _valueGetter; diff --git a/src/Aspire.Hosting/ApplicationModel/ReferenceExpression.cs b/src/Aspire.Hosting/ApplicationModel/ReferenceExpression.cs index 0dfb1b7a024..944c0bc17ec 100644 --- a/src/Aspire.Hosting/ApplicationModel/ReferenceExpression.cs +++ b/src/Aspire.Hosting/ApplicationModel/ReferenceExpression.cs @@ -27,7 +27,7 @@ namespace Aspire.Hosting.ApplicationModel; /// [AspireExport] [DebuggerDisplay("ReferenceExpression = {ValueExpression}, Providers = {ValueProviders.Count}")] -public class ReferenceExpression : IManifestExpressionProvider, IValueProvider, IValueWithReferences +public class ReferenceExpression : IExpressionValue, IValueWithReferences { /// /// Represents an empty reference expression with no name, value providers, or arguments. diff --git a/src/Aspire.Hosting/ResourceBuilderExtensions.cs b/src/Aspire.Hosting/ResourceBuilderExtensions.cs index 3b5f0410a4a..84d62d50595 100644 --- a/src/Aspire.Hosting/ResourceBuilderExtensions.cs +++ b/src/Aspire.Hosting/ResourceBuilderExtensions.cs @@ -32,7 +32,7 @@ public static class ResourceBuilderExtensions /// The name of the environment variable. /// The value of the environment variable. /// The . - [AspireExport("withEnvironment", Description = "Sets an environment variable")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, string? value) where T : IResourceWithEnvironment { ArgumentNullException.ThrowIfNull(builder); @@ -41,6 +41,37 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu return builder.WithAnnotation(new EnvironmentAnnotation(name, value ?? string.Empty)); } + [AspireExport("withEnvironment", Description = "Sets an environment variable")] + internal static IResourceBuilder WithEnvironment( + this IResourceBuilder builder, + string name, + [AspireUnion( + typeof(string), + typeof(ReferenceExpression), + typeof(EndpointReference), + typeof(IResourceBuilder), + typeof(IResourceBuilder), + typeof(IExpressionValue))] + object value) + where T : IResourceWithEnvironment + { + ArgumentNullException.ThrowIfNull(builder); + ArgumentNullException.ThrowIfNull(name); + ArgumentNullException.ThrowIfNull(value); + + return value switch + { + string stringValue => builder.WithEnvironment(name, stringValue), + ReferenceExpression expression => builder.WithEnvironment(name, expression), + EndpointReference endpointReference => builder.WithEnvironment(name, endpointReference), + IResourceBuilder parameter => builder.WithEnvironment(name, parameter), + IResourceBuilder connectionStringResource => builder.WithEnvironment(name, connectionStringResource), + IExpressionValue expressionValue => builder.WithEnvironment(name, expressionValue), + _ => throw new InvalidOperationException( + $"The value '{value.GetType().FullName}' can't be used with withEnvironment because it doesn't provide a supported environment value.") + }; + } + /// /// Adds an environment variable to the resource. /// @@ -81,7 +112,7 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// const redis = await builder.addRedis("cache"); /// const endpoint = await redis.getEndpoint("tcp"); /// const expr = refExpr`redis://${endpoint}:6379`; - /// await api.withEnvironmentExpression("REDIS_URL", expr); + /// await api.withEnvironment("REDIS_URL", expr); /// /// /// @@ -90,7 +121,7 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// The name of the environment variable. /// A ReferenceExpression that will be evaluated at runtime. /// The . - [AspireExport("withEnvironmentExpression", Description = "Adds an environment variable with a reference expression")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, ReferenceExpression value) where T : IResourceWithEnvironment { @@ -106,6 +137,24 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu }); } + // Keep these ATS-only aliases for backward compatibility with existing polyglot app hosts. + // Remove them once callers have migrated to the unified withEnvironment(...) export. + /// + /// Obsolete ATS alias for . + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The reference expression value. + /// The . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentExpression", Description = "Sets an environment variable from a reference expression")] + internal static IResourceBuilder WithEnvironmentExpressionShim(this IResourceBuilder builder, string name, ReferenceExpression value) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(name, value); + } + /// /// Adds an environment variable to the resource. /// @@ -164,7 +213,7 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// The name of the environment variable. /// The endpoint from which to extract the url. /// The . - [AspireExport("withEnvironmentEndpoint", Description = "Sets an environment variable from an endpoint reference")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, EndpointReference endpointReference) where T : IResourceWithEnvironment { @@ -180,6 +229,22 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu }); } + /// + /// Obsolete ATS alias for . + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The endpoint reference value. + /// The . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentEndpoint", Description = "Sets an environment variable from an endpoint reference")] + internal static IResourceBuilder WithEnvironmentEndpointShim(this IResourceBuilder builder, string name, EndpointReference endpointReference) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(name, endpointReference); + } + /// /// Adds an environment variable to the resource with the URL from the . /// @@ -231,7 +296,7 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// Name of environment variable. /// Resource builder for the parameter resource. /// The . - [AspireExport("withEnvironmentParameter", Description = "Sets an environment variable from a parameter resource")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment(this IResourceBuilder builder, string name, IResourceBuilder parameter) where T : IResourceWithEnvironment { ArgumentNullException.ThrowIfNull(builder); @@ -246,6 +311,22 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu }); } + /// + /// Obsolete ATS alias for . + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The parameter resource builder. + /// The . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentParameter", Description = "Sets an environment variable from a parameter resource")] + internal static IResourceBuilder WithEnvironmentParameterShim(this IResourceBuilder builder, string name, IResourceBuilder parameter) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(name, parameter); + } + /// /// Adds an environment variable to the resource with the connection string from the referenced resource. /// @@ -254,7 +335,7 @@ public static IResourceBuilder WithEnvironment(this IResourceBuilder bu /// The name of the environment variable under which the connection string will be set. /// The resource builder of the referenced service from which to pull the connection string. /// The . - [AspireExport("withEnvironmentConnectionString", Description = "Sets an environment variable from a connection string resource")] + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] public static IResourceBuilder WithEnvironment( this IResourceBuilder builder, string envVarName, @@ -273,6 +354,65 @@ public static IResourceBuilder WithEnvironment( }); } + /// + /// Obsolete ATS alias for . + /// + /// The destination resource type. + /// The destination resource builder. + /// The name of the environment variable. + /// The referenced connection string resource builder. + /// The . + [Obsolete("ATS compatibility shim. Use withEnvironment instead. Remove after existing polyglot app hosts migrate.")] + [AspireExport("withEnvironmentConnectionString", Description = "Sets an environment variable from a connection string resource")] + internal static IResourceBuilder WithEnvironmentConnectionStringShim( + this IResourceBuilder builder, + string envVarName, + IResourceBuilder resource) + where T : IResourceWithEnvironment + { + return builder.WithEnvironment(envVarName, resource); + } + + /// + /// Adds an environment variable to the resource with a value that provides both a runtime value and a manifest expression. + /// + /// The resource type. + /// The resource builder. + /// The name of the environment variable. + /// The value that provides both runtime values and manifest expressions. + /// The . + /// This method is not available in polyglot app hosts. Use the unified withEnvironment overload instead. + [AspireExportIgnore(Reason = "Polyglot app hosts use the internal withEnvironment dispatcher export.")] + public static IResourceBuilder WithEnvironment( + this IResourceBuilder builder, + string name, + IExpressionValue value) + where T : IResourceWithEnvironment + { + return builder.WithEnvironmentExpressionValue(name, value); + } + + private static IResourceBuilder WithEnvironmentExpressionValue( + this IResourceBuilder builder, + string name, + IExpressionValue value) + where T : IResourceWithEnvironment + { + ArgumentNullException.ThrowIfNull(builder); + ArgumentNullException.ThrowIfNull(name); + ArgumentNullException.ThrowIfNull(value); + + if (value is IValueWithReferences valueWithReferences) + { + WalkAndLinkResourceReferences(builder, valueWithReferences.References); + } + + return builder.WithEnvironment(context => + { + context.EnvironmentVariables[name] = value; + }); + } + /// /// Adds an environment variable to the resource with a value that implements both and . /// diff --git a/src/Aspire.Hosting/api/Aspire.Hosting.Capabilities.txt b/src/Aspire.Hosting/api/Aspire.Hosting.Capabilities.txt index b29e6b7e0d9..1708174226c 100644 --- a/src/Aspire.Hosting/api/Aspire.Hosting.Capabilities.txt +++ b/src/Aspire.Hosting/api/Aspire.Hosting.Capabilities.txt @@ -1,24 +1,24 @@ # Aspire Type System Capabilities # Generated by: aspire sdk dump --format ci -# Diagnostics -warning: Method 'addConnectionString' has collisions (Aspire.Hosting/addConnectionString, Aspire.Hosting/addConnectionStringExpression). 'Aspire.Hosting/addConnectionStringExpression' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addConnectionStringExpression] -warning: Method 'addContainerRegistry' has collisions (Aspire.Hosting/addContainerRegistry, Aspire.Hosting/addContainerRegistryFromString). 'Aspire.Hosting/addContainerRegistryFromString' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addContainerRegistryFromString] -warning: Method 'addExternalService' has collisions (Aspire.Hosting/addExternalService, Aspire.Hosting/addExternalServiceParameter, Aspire.Hosting/addExternalServiceUri). 'Aspire.Hosting/addExternalServiceParameter' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addExternalServiceParameter] -warning: Method 'addExternalService' has collisions (Aspire.Hosting/addExternalService, Aspire.Hosting/addExternalServiceParameter, Aspire.Hosting/addExternalServiceUri). 'Aspire.Hosting/addExternalServiceUri' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addExternalServiceUri] -warning: Method 'addParameter' has collisions (Aspire.Hosting/addParameter, Aspire.Hosting/addParameterWithValue). 'Aspire.Hosting/addParameterWithValue' was removed. Use [AspireExport(MethodName = "uniqueName")] to set an explicit name. [Aspire.Hosting/addParameterWithValue] - # Handle Types +Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.CSharpAppResource +Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue [interface] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource [interface] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs [interface] Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString [interface] @@ -30,8 +30,11 @@ Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.ConnectionStringResource @@ -46,12 +49,21 @@ Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent [int Aspire.Hosting/Aspire.Hosting.ExternalServiceResource Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder [interface] Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles [interface] +Aspire.Hosting/Aspire.Hosting.IUserSecretsManager [interface, ExposeProperties, ExposeMethods] +Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep [interface] +Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask [interface] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext [ExposeProperties] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep [ExposeProperties] Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext [ExposeProperties] +Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary [ExposeMethods] Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions [ExposeProperties] Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfiguration [interface] -Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment [interface] +Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection [interface, ExposeProperties] +Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment [interface, ExposeProperties] +Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger [interface] +Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILoggerFactory [interface] System.ComponentModel/System.IServiceProvider [interface] System.Private.CoreLib/System.Threading.CancellationToken @@ -104,16 +116,28 @@ enum:Aspire.Hosting.OtlpProtocol = Grpc | HttpProtobuf | HttpJson enum:System.Net.Sockets.ProtocolType = IP | IPv6HopByHopOptions | Unspecified | Icmp | Igmp | Ggp | IPv4 | Tcp | Pup | Udp | Idp | IPv6 | IPv6RoutingHeader | IPv6FragmentHeader | IPSecEncapsulatingSecurityPayload | IPSecAuthenticationHeader | IcmpV6 | IPv6NoNextHeader | IPv6DestinationOptions | ND | Raw | Ipx | Spx | SpxII | Unknown # Capabilities +Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.model(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/appendFormatted(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, value: string, format?: string) -> void Aspire.Hosting.ApplicationModel/appendLiteral(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, value: string) -> void Aspire.Hosting.ApplicationModel/appendValueProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder, valueProvider: any, format?: string) -> void +Aspire.Hosting.ApplicationModel/BeforeResourceStartedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/BeforeResourceStartedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/BeforeStartEvent.model(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.ApplicationModel/BeforeStartEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.BeforeStartEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/build(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.args(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/List Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setExecutionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext, value: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext +Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext +Aspire.Hosting.ApplicationModel/ConnectionStringAvailableEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ConnectionStringAvailableEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/EndpointReference.endpointName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string +Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.exists(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, enabledValue: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression, disabledValue: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression Aspire.Hosting.ApplicationModel/EndpointReference.host(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string @@ -121,6 +145,7 @@ Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated(context: Aspire.Ho Aspire.Hosting.ApplicationModel/EndpointReference.isHttp(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.isHttps(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> boolean Aspire.Hosting.ApplicationModel/EndpointReference.port(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> number +Aspire.Hosting.ApplicationModel/EndpointReference.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting.ApplicationModel/EndpointReference.scheme(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> string Aspire.Hosting.ApplicationModel/EndpointReference.setErrorMessage(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference Aspire.Hosting.ApplicationModel/EndpointReference.targetPort(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> number @@ -132,45 +157,99 @@ Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression(cont Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environmentVariables(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Dict Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> cancellationToken Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> string +Aspire.Hosting.ApplicationModel/ExecuteCommandContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setCancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setResourceName(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext +Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setServiceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext +Aspire.Hosting.ApplicationModel/getValue(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression, cancellationToken: cancellationToken) -> string Aspire.Hosting.ApplicationModel/getValueAsync(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference, cancellationToken?: cancellationToken) -> string +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder) -> boolean +Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.services(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> cancellationToken Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.logger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.setLogger(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext, value: Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext) -> Aspire.Hosting/List +Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.setServiceProvider(context: Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe(context: Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing, subscription: Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription) -> void Aspire.Hosting.Pipelines/dependsOn(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, stepName: string) -> void Aspire.Hosting.Pipelines/getStepsByTag(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, tag: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[] +Aspire.Hosting.Pipelines/PipelineConfigurationContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineConfigurationContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineConfigurationContext.setModel(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext +Aspire.Hosting.Pipelines/PipelineConfigurationContext.setServices(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: System.ComponentModel/System.IServiceProvider) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext Aspire.Hosting.Pipelines/PipelineConfigurationContext.setSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[]) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext Aspire.Hosting.Pipelines/PipelineConfigurationContext.steps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep[] +Aspire.Hosting.Pipelines/PipelineContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> cancellationToken +Aspire.Hosting.Pipelines/PipelineContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.Pipelines/PipelineContext.logger(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.Pipelines/PipelineContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext, value: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineContext.summary(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary Aspire.Hosting.Pipelines/PipelineStep.dependsOnSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List Aspire.Hosting.Pipelines/PipelineStep.description(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> string Aspire.Hosting.Pipelines/PipelineStep.name(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> string Aspire.Hosting.Pipelines/PipelineStep.requiredBySteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List +Aspire.Hosting.Pipelines/PipelineStep.resource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting.Pipelines/PipelineStep.setDependsOnSteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setDescription(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setName(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: string) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setRequiredBySteps(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep +Aspire.Hosting.Pipelines/PipelineStep.setResource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.setTags(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, value: Aspire.Hosting/List) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep Aspire.Hosting.Pipelines/PipelineStep.tags(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep) -> Aspire.Hosting/List Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> cancellationToken Aspire.Hosting.Pipelines/PipelineStepContext.executionContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting.Pipelines/PipelineStepContext.logger(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting.Pipelines/PipelineStepContext.model(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel +Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep +Aspire.Hosting.Pipelines/PipelineStepContext.services(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> System.ComponentModel/System.IServiceProvider +Aspire.Hosting.Pipelines/PipelineStepContext.setPipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext +Aspire.Hosting.Pipelines/PipelineStepContext.setReportingStep(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext +Aspire.Hosting.Pipelines/PipelineStepContext.summary(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setPipelineContext(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext, value: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext +Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setResource(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext +Aspire.Hosting.Pipelines/PipelineSummary.add(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary, key: string, value: string) -> void Aspire.Hosting.Pipelines/requiredBy(context: Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep, stepName: string) -> void Aspire.Hosting/addConnectionString(name: string, environmentVariableName?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString Aspire.Hosting/addConnectionStringBuilder(name: string, connectionStringBuilder: callback) -> Aspire.Hosting/Aspire.Hosting.ConnectionStringResource +Aspire.Hosting/addConnectionStringExpression(name: string, connectionStringExpression: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ConnectionStringResource Aspire.Hosting/addContainer(name: string, image: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/addContainerRegistry(name: string, endpoint: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource, repository?: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource +Aspire.Hosting/addContainerRegistryFromString(name: string, endpoint: string, repository?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerRegistryResource Aspire.Hosting/addCSharpApp(name: string, path: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/addCSharpAppWithOptions(name: string, path: string, configure: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.CSharpAppResource Aspire.Hosting/addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/addDotnetTool(name: string, packageId: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource Aspire.Hosting/addExecutable(name: string, command: string, workingDirectory: string, args: string[]) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource Aspire.Hosting/addExternalService(name: string, url: string) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addExternalServiceParameter(name: string, urlParameter: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addExternalServiceUri(name: string, uri: uri) -> Aspire.Hosting/Aspire.Hosting.ExternalServiceResource +Aspire.Hosting/addMarkdown(key: string, markdownString: string) -> void Aspire.Hosting/addParameter(name: string, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource +Aspire.Hosting/addParameterWithValue(name: string, value: string, publishValueAsDefault?: boolean, secret?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource Aspire.Hosting/addProject(name: string, projectPath: string, launchProfileName: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/addProjectWithOptions(name: string, projectPath: string, configure: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource Aspire.Hosting/asHttp2Service() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints @@ -178,8 +257,15 @@ Aspire.Hosting/build(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicat Aspire.Hosting/clearContainerFilesSources() -> Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles Aspire.Hosting/completeLog(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> void Aspire.Hosting/completeLogByName(resourceName: string) -> void +Aspire.Hosting/completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken) -> void Aspire.Hosting/createBuilder() -> Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder Aspire.Hosting/createBuilderWithOptions() -> Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder +Aspire.Hosting/createLogger(categoryName: string) -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILogger +Aspire.Hosting/createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask +Aspire.Hosting/createTask(statusText: string, cancellationToken?: cancellationToken) -> Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask Aspire.Hosting/Dict.clear() -> void Aspire.Hosting/Dict.count() -> number Aspire.Hosting/Dict.get(key: string) -> any @@ -194,20 +280,39 @@ Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode(context: Asp Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> boolean Aspire.Hosting/DistributedApplicationExecutionContext.operation(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> enum:Aspire.Hosting.DistributedApplicationOperation Aspire.Hosting/DistributedApplicationExecutionContext.publisherName(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> string +Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext) -> System.ComponentModel/System.IServiceProvider Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName(context: Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext, value: string) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext Aspire.Hosting/excludeFromManifest() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/excludeFromMcp() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/exists(key: string) -> boolean +Aspire.Hosting/findResourceByName(name: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/getChildren() -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection[] +Aspire.Hosting/getConfiguration() -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfiguration Aspire.Hosting/getConfigValue(key: string) -> string Aspire.Hosting/getConnectionString(name: string) -> string +Aspire.Hosting/getDistributedApplicationModel() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel Aspire.Hosting/getEndpoint(name: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference -Aspire.Hosting/getEnvironmentName() -> string -Aspire.Hosting/getRequiredService(typeId: string) -> any +Aspire.Hosting/getEventing() -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing +Aspire.Hosting/getLoggerFactory() -> Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.ILoggerFactory +Aspire.Hosting/getOrSetSecret(resourceBuilder: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, name: string, value: string) -> void +Aspire.Hosting/getResourceLoggerService() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService Aspire.Hosting/getResourceName() -> string -Aspire.Hosting/getService(typeId: string) -> any +Aspire.Hosting/getResourceNotificationService() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService +Aspire.Hosting/getResources() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource[] +Aspire.Hosting/getSection(key: string) -> Microsoft.Extensions.Configuration.Abstractions/Microsoft.Extensions.Configuration.IConfigurationSection +Aspire.Hosting/getUserSecretsManager() -> Aspire.Hosting/Aspire.Hosting.IUserSecretsManager Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> string +Aspire.Hosting/IDistributedApplicationBuilder.environment(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment Aspire.Hosting/IDistributedApplicationBuilder.eventing(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing Aspire.Hosting/IDistributedApplicationBuilder.executionContext(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext +Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager(context: Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder) -> Aspire.Hosting/Aspire.Hosting.IUserSecretsManager Aspire.Hosting/isDevelopment() -> boolean +Aspire.Hosting/isEnvironment(environmentName: string) -> boolean +Aspire.Hosting/isProduction() -> boolean +Aspire.Hosting/isStaging() -> boolean +Aspire.Hosting/IUserSecretsManager.filePath(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager) -> string +Aspire.Hosting/IUserSecretsManager.isAvailable(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager) -> boolean +Aspire.Hosting/IUserSecretsManager.trySetSecret(context: Aspire.Hosting/Aspire.Hosting.IUserSecretsManager, name: string, value: string) -> boolean Aspire.Hosting/List.add(item: any) -> void Aspire.Hosting/List.clear() -> void Aspire.Hosting/List.get(index: number) -> any @@ -221,7 +326,15 @@ Aspire.Hosting/log(level: string, message: string) -> void Aspire.Hosting/logDebug(message: string) -> void Aspire.Hosting/logError(message: string) -> void Aspire.Hosting/logInformation(message: string) -> void +Aspire.Hosting/logStep(level: string, message: string) -> void +Aspire.Hosting/logStepMarkdown(level: string, markdownString: string) -> void Aspire.Hosting/logWarning(message: string) -> void +Aspire.Hosting/onBeforeResourceStarted(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onConnectionStringAvailable(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString +Aspire.Hosting/onInitializeResource(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onResourceEndpointsAllocated(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints +Aspire.Hosting/onResourceReady(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource +Aspire.Hosting/onResourceStopped(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> boolean Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> boolean Aspire.Hosting/ProjectResourceOptions.launchProfileName(context: Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions) -> string @@ -236,7 +349,12 @@ Aspire.Hosting/publishProjectAsDockerFileWithConfigure(configure?: callback) -> Aspire.Hosting/publishResourceUpdate(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, state?: string, stateStyle?: string) -> void Aspire.Hosting/publishWithContainerFiles(source: Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles, destinationPath: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource Aspire.Hosting/run(context: Aspire.Hosting/Aspire.Hosting.DistributedApplication, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/saveStateJson(json: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/subscribeAfterResourcesCreated(callback: callback) -> Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription +Aspire.Hosting/subscribeBeforeStart(callback: callback) -> Aspire.Hosting/Aspire.Hosting.Eventing.DistributedApplicationEventSubscription Aspire.Hosting/tryGetResourceState(resourceName: string) -> Aspire.Hosting/Aspire.Hosting.Ats.ResourceEventDto +Aspire.Hosting/updateTask(statusText: string, cancellationToken?: cancellationToken) -> void +Aspire.Hosting/updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken) -> void Aspire.Hosting/waitFor(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/waitForCompletion(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, exitCode?: number) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/waitForDependencies(resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> void @@ -248,7 +366,6 @@ Aspire.Hosting/waitForStartWithBehavior(dependency: Aspire.Hosting/Aspire.Hostin Aspire.Hosting/waitForWithBehavior(dependency: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, waitBehavior: enum:Aspire.Hosting.ApplicationModel.WaitBehavior) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport Aspire.Hosting/withArgs(args: string[]) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs Aspire.Hosting/withArgsCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs -Aspire.Hosting/withArgsCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs Aspire.Hosting/withBindMount(source: string, target: string, isReadOnly?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withBuildArg(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withBuildSecret(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource @@ -269,9 +386,8 @@ Aspire.Hosting/withDockerfileBaseImage(buildImage?: string, runtimeImage?: strin Aspire.Hosting/withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: enum:System.Net.Sockets.ProtocolType) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting/withEndpointProxySupport(proxyEnabled: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withEntrypoint(entrypoint: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource -Aspire.Hosting/withEnvironment(name: string, value: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment +Aspire.Hosting/withEnvironment(name: string, value: string|Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression|Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference|Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource|Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString|Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment -Aspire.Hosting/withEnvironmentCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentConnectionString(envVarName: string, resource: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentEndpoint(name: string, endpointReference: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withEnvironmentExpression(name: string, value: Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment @@ -299,7 +415,6 @@ Aspire.Hosting/withOtlpExporterProtocol(protocol: enum:Aspire.Hosting.OtlpProtoc Aspire.Hosting/withoutHttpsCertificate() -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withParentRelationship(parent: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withPipelineConfiguration(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource -Aspire.Hosting/withPipelineConfigurationAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withPipelineStepFactory(stepName: string, callback: callback, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withReference(source: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource, connectionName?: string, optional?: boolean, name?: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment Aspire.Hosting/withReferenceEndpoint(endpointReference: Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment @@ -320,6 +435,5 @@ Aspire.Hosting/withUrlExpression(url: Aspire.Hosting/Aspire.Hosting.ApplicationM Aspire.Hosting/withUrlForEndpoint(endpointName: string, callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withUrlForEndpointFactory(endpointName: string, callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints Aspire.Hosting/withUrlsCallback(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource -Aspire.Hosting/withUrlsCallbackAsync(callback: callback) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource Aspire.Hosting/withVolume(target: string, name?: string, isReadOnly?: boolean) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource Aspire.Hosting/withWorkingDirectory(workingDirectory: string) -> Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource diff --git a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/AddTestRedisCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/AddTestRedisCapability.verified.txt index ed2cd118f74..88dfd266f4a 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/AddTestRedisCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/AddTestRedisCapability.verified.txt @@ -208,14 +208,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -227,6 +249,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -240,14 +272,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -259,6 +313,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.go b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.go index 9c0cdfe2a7f..98f1183a47a 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.go +++ b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.go @@ -569,7 +569,7 @@ func (s *CSharpAppResource) WithRequiredCommand(command string, helpLink *string } // WithEnvironment sets an environment variable -func (s *CSharpAppResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *CSharpAppResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -582,7 +582,7 @@ func (s *CSharpAppResource) WithEnvironment(name string, value string) (*IResour return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *CSharpAppResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -3663,7 +3663,7 @@ func (s *ContainerResource) WithRequiredCommand(command string, helpLink *string } // WithEnvironment sets an environment variable -func (s *ContainerResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *ContainerResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -3676,7 +3676,7 @@ func (s *ContainerResource) WithEnvironment(name string, value string) (*IResour return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *ContainerResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -5256,7 +5256,7 @@ func (s *DotnetToolResource) WithRequiredCommand(command string, helpLink *strin } // WithEnvironment sets an environment variable -func (s *DotnetToolResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *DotnetToolResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -5269,7 +5269,7 @@ func (s *DotnetToolResource) WithEnvironment(name string, value string) (*IResou return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *DotnetToolResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -6925,7 +6925,7 @@ func (s *ExecutableResource) WithRequiredCommand(command string, helpLink *strin } // WithEnvironment sets an environment variable -func (s *ExecutableResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *ExecutableResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -6938,7 +6938,7 @@ func (s *ExecutableResource) WithEnvironment(name string, value string) (*IResou return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *ExecutableResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -9464,6 +9464,18 @@ func NewIDistributedApplicationResourceEvent(handle *Handle, client *AspireClien } } +// IExpressionValue wraps a handle for Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue. +type IExpressionValue struct { + HandleWrapperBase +} + +// NewIExpressionValue creates a new IExpressionValue. +func NewIExpressionValue(handle *Handle, client *AspireClient) *IExpressionValue { + return &IExpressionValue{ + HandleWrapperBase: NewHandleWrapperBase(handle, client), + } +} + // IHostEnvironment wraps a handle for Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment. type IHostEnvironment struct { HandleWrapperBase @@ -11564,7 +11576,7 @@ func (s *ProjectResource) WithRequiredCommand(command string, helpLink *string) } // WithEnvironment sets an environment variable -func (s *ProjectResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *ProjectResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -11577,7 +11589,7 @@ func (s *ProjectResource) WithEnvironment(name string, value string) (*IResource return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *ProjectResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -13667,7 +13679,7 @@ func (s *TestDatabaseResource) WithRequiredCommand(command string, helpLink *str } // WithEnvironment sets an environment variable -func (s *TestDatabaseResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *TestDatabaseResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -13680,7 +13692,7 @@ func (s *TestDatabaseResource) WithEnvironment(name string, value string) (*IRes return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *TestDatabaseResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -15273,7 +15285,7 @@ func (s *TestRedisResource) WithRequiredCommand(command string, helpLink *string } // WithEnvironment sets an environment variable -func (s *TestRedisResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *TestRedisResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -15286,7 +15298,7 @@ func (s *TestRedisResource) WithEnvironment(name string, value string) (*IResour return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *TestRedisResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -17091,7 +17103,7 @@ func (s *TestVaultResource) WithRequiredCommand(command string, helpLink *string } // WithEnvironment sets an environment variable -func (s *TestVaultResource) WithEnvironment(name string, value string) (*IResourceWithEnvironment, error) { +func (s *TestVaultResource) WithEnvironment(name string, value any) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), } @@ -17104,7 +17116,7 @@ func (s *TestVaultResource) WithEnvironment(name string, value string) (*IResour return result.(*IResourceWithEnvironment), nil } -// WithEnvironmentExpression adds an environment variable with a reference expression +// WithEnvironmentExpression sets an environment variable from a reference expression func (s *TestVaultResource) WithEnvironmentExpression(name string, value *ReferenceExpression) (*IResourceWithEnvironment, error) { reqArgs := map[string]any{ "builder": SerializeValue(s.Handle()), @@ -18467,6 +18479,9 @@ func init() { RegisterHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", func(h *Handle, c *AspireClient) any { return NewEnvironmentCallbackContext(h, c) }) + RegisterHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue", func(h *Handle, c *AspireClient) any { + return NewIExpressionValue(h, c) + }) RegisterHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", func(h *Handle, c *AspireClient) any { return NewInitializeResourceEvent(h, c) }) diff --git a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithOptionalStringCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithOptionalStringCapability.verified.txt index 60fc94c8aac..701a2069a04 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithOptionalStringCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithOptionalStringCapability.verified.txt @@ -232,14 +232,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -251,6 +273,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -264,14 +296,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -283,6 +337,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithPersistenceCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithPersistenceCapability.verified.txt index 2ea9add7fc1..c1504990c4a 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithPersistenceCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Go.Tests/Snapshots/WithPersistenceCapability.verified.txt @@ -195,14 +195,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -214,6 +236,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -227,14 +259,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -246,6 +300,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -608,14 +672,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -627,6 +713,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -640,14 +736,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -659,6 +777,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1022,14 +1150,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1041,6 +1191,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1054,14 +1214,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1073,6 +1255,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/AddTestRedisCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/AddTestRedisCapability.verified.txt index 247af3354f2..620a9ae0dcf 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/AddTestRedisCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/AddTestRedisCapability.verified.txt @@ -208,14 +208,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -227,6 +249,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -240,14 +272,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -259,6 +313,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.java b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.java index 38850f68c1d..1f7777e881d 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.java +++ b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.java @@ -1049,6 +1049,7 @@ public class AspireRegistrations { AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel", (h, c) -> new DistributedApplicationModel(h, c)); AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", (h, c) -> new EndpointReferenceExpression(h, c)); AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", (h, c) -> new EnvironmentCallbackContext(h, c)); + AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue", (h, c) -> new IExpressionValue(h, c)); AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", (h, c) -> new InitializeResourceEvent(h, c)); AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", (h, c) -> new ReferenceExpressionBuilder(h, c)); AspireClient.registerHandleWrapper("Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", (h, c) -> new UpdateCommandStateContext(h, c)); @@ -1364,8 +1365,40 @@ public CSharpAppResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public CSharpAppResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public CSharpAppResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public CSharpAppResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public CSharpAppResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -1374,7 +1407,7 @@ public CSharpAppResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public CSharpAppResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -4643,8 +4676,40 @@ public ContainerResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public ContainerResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public ContainerResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ContainerResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public ContainerResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -4653,7 +4718,7 @@ public ContainerResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public ContainerResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -6293,8 +6358,40 @@ public DotnetToolResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public DotnetToolResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public DotnetToolResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public DotnetToolResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public DotnetToolResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -6303,7 +6400,7 @@ public DotnetToolResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public DotnetToolResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -7882,8 +7979,40 @@ public ExecutableResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public ExecutableResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public ExecutableResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ExecutableResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public ExecutableResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -7892,7 +8021,7 @@ public ExecutableResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public ExecutableResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -10415,6 +10544,22 @@ public class IDistributedApplicationResourceEvent extends HandleWrapperBase { } +// ===== IExpressionValue.java ===== +// IExpressionValue.java - GENERATED CODE - DO NOT EDIT + +package aspire; + +import java.util.*; +import java.util.function.*; + +/** Wrapper for Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue. */ +public class IExpressionValue extends HandleWrapperBase { + IExpressionValue(Handle handle, AspireClient client) { + super(handle, client); + } + +} + // ===== IHostEnvironment.java ===== // IHostEnvironment.java - GENERATED CODE - DO NOT EDIT @@ -12470,8 +12615,40 @@ public ProjectResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public ProjectResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public ProjectResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public ProjectResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public ProjectResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -12480,7 +12657,7 @@ public ProjectResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public ProjectResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -14785,8 +14962,40 @@ public TestDatabaseResource withRequiredCommand(String command, String helpLink) return this; } - /** Sets an environment variable */ public TestDatabaseResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public TestDatabaseResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestDatabaseResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public TestDatabaseResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -14795,7 +15004,7 @@ public TestDatabaseResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public TestDatabaseResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -16412,8 +16621,40 @@ public TestRedisResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public TestRedisResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public TestRedisResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestRedisResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public TestRedisResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -16422,7 +16663,7 @@ public TestRedisResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public TestRedisResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -18176,8 +18417,40 @@ public TestVaultResource withRequiredCommand(String command, String helpLink) { return this; } - /** Sets an environment variable */ public TestVaultResource withEnvironment(String name, String value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, ReferenceExpression value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, EndpointReference value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, ParameterResource value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, IResourceWithConnectionString value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, ResourceBuilderBase value) { + return withEnvironment(name, new IResourceWithConnectionString(value.getHandle(), value.getClient())); + } + + public TestVaultResource withEnvironment(String name, IExpressionValue value) { + return withEnvironment(name, AspireUnion.of(value)); + } + + public TestVaultResource withEnvironment(String name, HandleWrapperBase value) { + return withEnvironment(name, new IExpressionValue(value.getHandle(), value.getClient())); + } + + /** Sets an environment variable */ + public TestVaultResource withEnvironment(String name, AspireUnion value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); reqArgs.put("name", AspireClient.serializeValue(name)); @@ -18186,7 +18459,7 @@ public TestVaultResource withEnvironment(String name, String value) { return this; } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ public TestVaultResource withEnvironmentExpression(String name, ReferenceExpression value) { Map reqArgs = new HashMap<>(); reqArgs.put("builder", AspireClient.serializeValue(getHandle())); @@ -20117,6 +20390,7 @@ public WithVolumeOptions isReadOnly(Boolean value) { .modules/IDistributedApplicationEvent.java .modules/IDistributedApplicationEventing.java .modules/IDistributedApplicationResourceEvent.java +.modules/IExpressionValue.java .modules/IHostEnvironment.java .modules/ILogger.java .modules/ILoggerFactory.java diff --git a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithOptionalStringCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithOptionalStringCapability.verified.txt index 96253f5953c..cf7b59d7b00 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithOptionalStringCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithOptionalStringCapability.verified.txt @@ -232,14 +232,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -251,6 +273,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -264,14 +296,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -283,6 +337,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithPersistenceCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithPersistenceCapability.verified.txt index df81497ddec..15d05ff0dc8 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithPersistenceCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Java.Tests/Snapshots/WithPersistenceCapability.verified.txt @@ -195,14 +195,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -214,6 +236,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -227,14 +259,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -246,6 +300,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -608,14 +672,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -627,6 +713,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -640,14 +736,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -659,6 +777,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1022,14 +1150,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1041,6 +1191,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1054,14 +1214,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1073,6 +1255,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AddTestRedisCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AddTestRedisCapability.verified.txt index 15010695ddf..68480e7bf3c 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AddTestRedisCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AddTestRedisCapability.verified.txt @@ -208,14 +208,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -227,6 +249,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -240,14 +272,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -259,6 +313,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AtsGeneratedAspire.verified.py b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AtsGeneratedAspire.verified.py index a976eb1109c..e202a18b0aa 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AtsGeneratedAspire.verified.py +++ b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/AtsGeneratedAspire.verified.py @@ -1610,11 +1610,14 @@ def add_test_vault(self, name: str, **kwargs: typing.Unpack["TestVaultResourceKw return typing.cast(TestVaultResource, result) +class AbstractValueProvider(abc.ABC): + """Abstract base class for AbstractValueProvider.""" + class AbstractManifestExpressionProvider(abc.ABC): """Abstract base class for AbstractManifestExpressionProvider.""" -class AbstractValueProvider(abc.ABC): - """Abstract base class for AbstractValueProvider.""" +class AbstractExpressionValue(abc.ABC): + """Abstract base class for AbstractExpressionValue.""" class AbstractValueWithReferences(abc.ABC): """Abstract base class for AbstractValueWithReferences.""" @@ -1939,7 +1942,7 @@ class AbstractResourceWithArgs(AbstractResource): """Abstract base class for AbstractResourceWithArgs interface.""" -class AbstractResourceWithConnectionString(AbstractResource, AbstractManifestExpressionProvider, AbstractValueProvider, AbstractValueWithReferences): +class AbstractResourceWithConnectionString(AbstractResource, AbstractExpressionValue, AbstractValueWithReferences): """Abstract base class for AbstractResourceWithConnectionString interface.""" @abc.abstractmethod diff --git a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.py b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.py index ab4ea516e51..28e06763f10 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.py +++ b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.py @@ -2203,6 +2203,15 @@ def unsubscribe(self, subscription: DistributedApplicationEventSubscription) -> class AbstractDistributedApplicationResourceEvent(abc.ABC): """Abstract base class for AbstractDistributedApplicationResourceEvent.""" +class AbstractValueProvider(abc.ABC): + """Abstract base class for AbstractValueProvider.""" + +class AbstractManifestExpressionProvider(abc.ABC): + """Abstract base class for AbstractManifestExpressionProvider.""" + +class AbstractExpressionValue(abc.ABC): + """Abstract base class for AbstractExpressionValue.""" + class AbstractHostEnvironment: """Type class for AbstractHostEnvironment.""" @@ -2344,9 +2353,6 @@ def create_logger(self, category_name: str) -> AbstractLogger: return typing.cast(AbstractLogger, result) -class AbstractManifestExpressionProvider(abc.ABC): - """Abstract base class for AbstractManifestExpressionProvider.""" - class AbstractReportingStep: """Type class for AbstractReportingStep.""" @@ -2498,9 +2504,6 @@ def complete_task_markdown(self, markdown_string: str, *, completion_state: str ) -class AbstractValueProvider(abc.ABC): - """Abstract base class for AbstractValueProvider.""" - class AbstractValueWithReferences(abc.ABC): """Abstract base class for AbstractValueWithReferences.""" @@ -4753,7 +4756,7 @@ def with_args_callback(self, callback: typing.Callable[[CommandLineArgsCallbackC """Sets command-line arguments via callback""" -class AbstractResourceWithConnectionString(AbstractResource, AbstractManifestExpressionProvider, AbstractValueProvider, AbstractValueWithReferences): +class AbstractResourceWithConnectionString(AbstractResource, AbstractExpressionValue, AbstractValueWithReferences): """Abstract base class for AbstractResourceWithConnectionString interface.""" @abc.abstractmethod @@ -4845,17 +4848,17 @@ def with_otlp_exporter(self, *, protocol: OtlpProtocol | None = None) -> typing. """Configures OTLP telemetry export""" @abc.abstractmethod - def with_env(self, name: str, value: str) -> typing.Self: + def with_env(self, name: str, value: str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue) -> typing.Self: """Sets an environment variable""" - @abc.abstractmethod - def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: - """Adds an environment variable with a reference expression""" - @abc.abstractmethod def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: """Sets environment variables via callback""" + @abc.abstractmethod + def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: + """Sets an environment variable from a reference expression""" + @abc.abstractmethod def with_env_endpoint(self, name: str, endpoint_reference: EndpointReference) -> typing.Self: """Sets an environment variable from an endpoint reference""" @@ -6049,9 +6052,9 @@ class ContainerResourceKwargs(_BaseResourceKwargs, total=False): mcp_server: McpServerParameters | typing.Literal[True] otlp_exporter: OtlpProtocol | typing.Literal[True] publish_as_connection_string: typing.Literal[True] - env: tuple[str, str] - env_expression: tuple[str, ReferenceExpression] + env: tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue] env_callback: typing.Callable[[EnvironmentCallbackContext], None] + env_expression: tuple[str, ReferenceExpression] env_endpoint: tuple[str, EndpointReference] env_parameter: tuple[str, ParameterResource] env_connection_string: tuple[str, AbstractResourceWithConnectionString] @@ -6312,7 +6315,7 @@ def publish_as_connection_string(self) -> typing.Self: self._handle = self._wrap_builder(result) return self - def with_env(self, name: str, value: str) -> typing.Self: + def with_env(self, name: str, value: str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue) -> typing.Self: """Sets an environment variable""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} rpc_args['name'] = name @@ -6324,24 +6327,24 @@ def with_env(self, name: str, value: str) -> typing.Self: self._handle = self._wrap_builder(result) return self - def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: - """Adds an environment variable with a reference expression""" + def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: + """Sets environment variables via callback""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['name'] = name - rpc_args['value'] = value + rpc_args['callback'] = self._client.register_callback(callback) result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentExpression', + 'Aspire.Hosting/withEnvironmentCallback', rpc_args, ) self._handle = self._wrap_builder(result) return self - def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: - """Sets environment variables via callback""" + def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: + """Sets an environment variable from a reference expression""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['callback'] = self._client.register_callback(callback) + rpc_args['name'] = name + rpc_args['value'] = value result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentCallback', + 'Aspire.Hosting/withEnvironmentExpression', rpc_args, ) self._handle = self._wrap_builder(result) @@ -6920,13 +6923,20 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack else: raise TypeError("Invalid type for option 'publish_as_connection_string'. Expected: Literal[True]") if _env := kwargs.pop("env", None): - if _validate_tuple_types(_env, (str, str)): + if _validate_tuple_types(_env, (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)): rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["name"] = typing.cast(tuple[str, str], _env)[0] - rpc_args["value"] = typing.cast(tuple[str, str], _env)[1] + rpc_args["name"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[0] + rpc_args["value"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[1] handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironment', rpc_args)) else: - raise TypeError("Invalid type for option 'env'. Expected: (str, str)") + raise TypeError("Invalid type for option 'env'. Expected: (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)") + if _env_callback := kwargs.pop("env_callback", None): + if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): + rpc_args: dict[str, typing.Any] = {"builder": handle} + rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) + handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) + else: + raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_expression := kwargs.pop("env_expression", None): if _validate_tuple_types(_env_expression, (str, ReferenceExpression)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -6935,13 +6945,6 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentExpression', rpc_args)) else: raise TypeError("Invalid type for option 'env_expression'. Expected: (str, ReferenceExpression)") - if _env_callback := kwargs.pop("env_callback", None): - if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): - rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) - handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) - else: - raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_endpoint := kwargs.pop("env_endpoint", None): if _validate_tuple_types(_env_endpoint, (str, EndpointReference)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -7236,9 +7239,9 @@ class ProjectResourceKwargs(_BaseResourceKwargs, total=False): replicas: int disable_forwarded_headers: typing.Literal[True] publish_as_docker_file: typing.Callable[[ContainerResource], None] | typing.Literal[True] - env: tuple[str, str] - env_expression: tuple[str, ReferenceExpression] + env: tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue] env_callback: typing.Callable[[EnvironmentCallbackContext], None] + env_expression: tuple[str, ReferenceExpression] env_endpoint: tuple[str, EndpointReference] env_parameter: tuple[str, ParameterResource] env_connection_string: tuple[str, AbstractResourceWithConnectionString] @@ -7336,7 +7339,7 @@ def publish_as_docker_file(self, *, configure: typing.Callable[[ContainerResourc self._handle = self._wrap_builder(result) return self - def with_env(self, name: str, value: str) -> typing.Self: + def with_env(self, name: str, value: str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue) -> typing.Self: """Sets an environment variable""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} rpc_args['name'] = name @@ -7348,24 +7351,24 @@ def with_env(self, name: str, value: str) -> typing.Self: self._handle = self._wrap_builder(result) return self - def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: - """Adds an environment variable with a reference expression""" + def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: + """Sets environment variables via callback""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['name'] = name - rpc_args['value'] = value + rpc_args['callback'] = self._client.register_callback(callback) result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentExpression', + 'Aspire.Hosting/withEnvironmentCallback', rpc_args, ) self._handle = self._wrap_builder(result) return self - def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: - """Sets environment variables via callback""" + def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: + """Sets an environment variable from a reference expression""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['callback'] = self._client.register_callback(callback) + rpc_args['name'] = name + rpc_args['value'] = value result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentCallback', + 'Aspire.Hosting/withEnvironmentExpression', rpc_args, ) self._handle = self._wrap_builder(result) @@ -7827,13 +7830,20 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack else: raise TypeError("Invalid type for option 'publish_as_docker_file'. Expected: Callable[[ContainerResource], None] or Literal[True]") if _env := kwargs.pop("env", None): - if _validate_tuple_types(_env, (str, str)): + if _validate_tuple_types(_env, (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)): rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["name"] = typing.cast(tuple[str, str], _env)[0] - rpc_args["value"] = typing.cast(tuple[str, str], _env)[1] + rpc_args["name"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[0] + rpc_args["value"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[1] handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironment', rpc_args)) else: - raise TypeError("Invalid type for option 'env'. Expected: (str, str)") + raise TypeError("Invalid type for option 'env'. Expected: (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)") + if _env_callback := kwargs.pop("env_callback", None): + if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): + rpc_args: dict[str, typing.Any] = {"builder": handle} + rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) + handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) + else: + raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_expression := kwargs.pop("env_expression", None): if _validate_tuple_types(_env_expression, (str, ReferenceExpression)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -7842,13 +7852,6 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentExpression', rpc_args)) else: raise TypeError("Invalid type for option 'env_expression'. Expected: (str, ReferenceExpression)") - if _env_callback := kwargs.pop("env_callback", None): - if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): - rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) - handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) - else: - raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_endpoint := kwargs.pop("env_endpoint", None): if _validate_tuple_types(_env_endpoint, (str, EndpointReference)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -8152,9 +8155,9 @@ class ExecutableResourceKwargs(_BaseResourceKwargs, total=False): working_dir: str mcp_server: McpServerParameters | typing.Literal[True] otlp_exporter: OtlpProtocol | typing.Literal[True] - env: tuple[str, str] - env_expression: tuple[str, ReferenceExpression] + env: tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue] env_callback: typing.Callable[[EnvironmentCallbackContext], None] + env_expression: tuple[str, ReferenceExpression] env_endpoint: tuple[str, EndpointReference] env_parameter: tuple[str, ParameterResource] env_connection_string: tuple[str, AbstractResourceWithConnectionString] @@ -8253,7 +8256,7 @@ def with_otlp_exporter(self, *, protocol: OtlpProtocol | None = None) -> typing. self._handle = self._wrap_builder(result) return self - def with_env(self, name: str, value: str) -> typing.Self: + def with_env(self, name: str, value: str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue) -> typing.Self: """Sets an environment variable""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} rpc_args['name'] = name @@ -8265,24 +8268,24 @@ def with_env(self, name: str, value: str) -> typing.Self: self._handle = self._wrap_builder(result) return self - def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: - """Adds an environment variable with a reference expression""" + def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: + """Sets environment variables via callback""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['name'] = name - rpc_args['value'] = value + rpc_args['callback'] = self._client.register_callback(callback) result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentExpression', + 'Aspire.Hosting/withEnvironmentCallback', rpc_args, ) self._handle = self._wrap_builder(result) return self - def with_env_callback(self, callback: typing.Callable[[EnvironmentCallbackContext], None]) -> typing.Self: - """Sets environment variables via callback""" + def with_env_expression(self, name: str, value: ReferenceExpression) -> typing.Self: + """Sets an environment variable from a reference expression""" rpc_args: dict[str, typing.Any] = {'builder': self._handle} - rpc_args['callback'] = self._client.register_callback(callback) + rpc_args['name'] = name + rpc_args['value'] = value result = self._client.invoke_capability( - 'Aspire.Hosting/withEnvironmentCallback', + 'Aspire.Hosting/withEnvironmentExpression', rpc_args, ) self._handle = self._wrap_builder(result) @@ -8733,13 +8736,20 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack else: raise TypeError("Invalid type for option 'otlp_exporter'. Expected: OtlpProtocol or Literal[True]") if _env := kwargs.pop("env", None): - if _validate_tuple_types(_env, (str, str)): + if _validate_tuple_types(_env, (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)): rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["name"] = typing.cast(tuple[str, str], _env)[0] - rpc_args["value"] = typing.cast(tuple[str, str], _env)[1] + rpc_args["name"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[0] + rpc_args["value"] = typing.cast(tuple[str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue], _env)[1] handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironment', rpc_args)) else: - raise TypeError("Invalid type for option 'env'. Expected: (str, str)") + raise TypeError("Invalid type for option 'env'. Expected: (str, str | ReferenceExpression | EndpointReference | ParameterResource | AbstractResourceWithConnectionString | AbstractExpressionValue)") + if _env_callback := kwargs.pop("env_callback", None): + if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): + rpc_args: dict[str, typing.Any] = {"builder": handle} + rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) + handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) + else: + raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_expression := kwargs.pop("env_expression", None): if _validate_tuple_types(_env_expression, (str, ReferenceExpression)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -8748,13 +8758,6 @@ def __init__(self, handle: Handle, client: AspireClient, **kwargs: typing.Unpack handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentExpression', rpc_args)) else: raise TypeError("Invalid type for option 'env_expression'. Expected: (str, ReferenceExpression)") - if _env_callback := kwargs.pop("env_callback", None): - if _validate_type(_env_callback, typing.Callable[[EnvironmentCallbackContext], None]): - rpc_args: dict[str, typing.Any] = {"builder": handle} - rpc_args["callback"] = client.register_callback(typing.cast(typing.Callable[[EnvironmentCallbackContext], None], _env_callback)) - handle = self._wrap_builder(client.invoke_capability('Aspire.Hosting/withEnvironmentCallback', rpc_args)) - else: - raise TypeError("Invalid type for option 'env_callback'. Expected: Callable[[EnvironmentCallbackContext], None]") if _env_endpoint := kwargs.pop("env_endpoint", None): if _validate_tuple_types(_env_endpoint, (str, EndpointReference)): rpc_args: dict[str, typing.Any] = {"builder": handle} @@ -9195,7 +9198,7 @@ class ParameterResourceKwargs(_BaseResourceKwargs, total=False): description: str | tuple[str, bool] -class ParameterResource(_BaseResource, AbstractManifestExpressionProvider, AbstractValueProvider): +class ParameterResource(_BaseResource, AbstractExpressionValue): """ParameterResource resource.""" def __repr__(self) -> str: diff --git a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithOptionalStringCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithOptionalStringCapability.verified.txt index 4806ad8ae8b..ede7c4adbeb 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithOptionalStringCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithOptionalStringCapability.verified.txt @@ -232,14 +232,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -251,6 +273,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -264,14 +296,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -283,6 +337,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithPersistenceCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithPersistenceCapability.verified.txt index 06e178ed65a..ce3e8add9f2 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithPersistenceCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Python.Tests/Snapshots/WithPersistenceCapability.verified.txt @@ -195,14 +195,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -214,6 +236,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -227,14 +259,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -246,6 +300,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -608,14 +672,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -627,6 +713,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -640,14 +736,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -659,6 +777,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1022,14 +1150,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1041,6 +1191,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1054,14 +1214,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1073,6 +1255,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/AddTestRedisCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/AddTestRedisCapability.verified.txt index defc480fc87..2e9f83a237a 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/AddTestRedisCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/AddTestRedisCapability.verified.txt @@ -208,14 +208,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -227,6 +249,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -240,14 +272,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -259,6 +313,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.rs b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.rs index 589382ca04e..bdeda9659ce 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.rs +++ b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.rs @@ -859,7 +859,7 @@ impl CSharpAppResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -869,7 +869,7 @@ impl CSharpAppResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -3365,7 +3365,7 @@ impl ContainerResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -3375,7 +3375,7 @@ impl ContainerResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -4733,7 +4733,7 @@ impl DotnetToolResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -4743,7 +4743,7 @@ impl DotnetToolResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -6089,7 +6089,7 @@ impl ExecutableResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -6099,7 +6099,7 @@ impl ExecutableResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -8248,6 +8248,32 @@ impl IDistributedApplicationResourceEvent { } } +/// Wrapper for Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue +pub struct IExpressionValue { + handle: Handle, + client: Arc, +} + +impl HasHandle for IExpressionValue { + fn handle(&self) -> &Handle { + &self.handle + } +} + +impl IExpressionValue { + pub fn new(handle: Handle, client: Arc) -> Self { + Self { handle, client } + } + + pub fn handle(&self) -> &Handle { + &self.handle + } + + pub fn client(&self) -> &Arc { + &self.client + } +} + /// Wrapper for Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment pub struct IHostEnvironment { handle: Handle, @@ -10315,7 +10341,7 @@ impl ProjectResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -10325,7 +10351,7 @@ impl ProjectResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -12144,7 +12170,7 @@ impl TestDatabaseResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -12154,7 +12180,7 @@ impl TestDatabaseResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -13440,7 +13466,7 @@ impl TestRedisResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -13450,7 +13476,7 @@ impl TestRedisResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); @@ -14900,7 +14926,7 @@ impl TestVaultResource { } /// Sets an environment variable - pub fn with_environment(&self, name: &str, value: &str) -> Result> { + pub fn with_environment(&self, name: &str, value: Value) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); args.insert("name".to_string(), serde_json::to_value(&name).unwrap_or(Value::Null)); @@ -14910,7 +14936,7 @@ impl TestVaultResource { Ok(IResourceWithEnvironment::new(handle, self.client.clone())) } - /// Adds an environment variable with a reference expression + /// Sets an environment variable from a reference expression pub fn with_environment_expression(&self, name: &str, value: ReferenceExpression) -> Result> { let mut args: HashMap = HashMap::new(); args.insert("builder".to_string(), self.handle.to_json()); diff --git a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithOptionalStringCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithOptionalStringCapability.verified.txt index 368db08e88b..35d5a7b561c 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithOptionalStringCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithOptionalStringCapability.verified.txt @@ -232,14 +232,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -251,6 +273,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -264,14 +296,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -283,6 +337,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithPersistenceCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithPersistenceCapability.verified.txt index 460608de6a3..f7461c8288c 100644 --- a/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithPersistenceCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.Rust.Tests/Snapshots/WithPersistenceCapability.verified.txt @@ -195,14 +195,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -214,6 +236,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -227,14 +259,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -246,6 +300,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -608,14 +672,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -627,6 +713,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -640,14 +736,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -659,6 +777,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1022,14 +1150,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1041,6 +1191,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1054,14 +1214,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1073,6 +1255,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AddTestRedisCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AddTestRedisCapability.verified.txt index 9613e46a28a..bb691ca1fe2 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AddTestRedisCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AddTestRedisCapability.verified.txt @@ -208,14 +208,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -227,6 +249,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -240,14 +272,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -259,6 +313,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.ts b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.ts index 174077be454..2fcc2bf5047 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.ts +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/TwoPassScanningGeneratedAspire.verified.ts @@ -7085,7 +7085,7 @@ export class ContainerResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -7095,7 +7095,7 @@ export class ContainerResource extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string): ContainerResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): ContainerResourcePromise { return new ContainerResourcePromise(this._promise.then(obj => obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): ContainerResourcePromise { return new ContainerResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -9071,7 +9071,7 @@ export class CSharpAppResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -9081,7 +9081,7 @@ export class CSharpAppResource extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string): CSharpAppResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): CSharpAppResourcePromise { return new CSharpAppResourcePromise(this._promise.then(obj => obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): CSharpAppResourcePromise { return new CSharpAppResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -11086,7 +11086,7 @@ export class DotnetToolResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -11096,7 +11096,7 @@ export class DotnetToolResource extends ResourceBuilderBase obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): DotnetToolResourcePromise { return new DotnetToolResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -13026,7 +13026,7 @@ export class ExecutableResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -13036,7 +13036,7 @@ export class ExecutableResource extends ResourceBuilderBase obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): ExecutableResourcePromise { return new ExecutableResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -16921,7 +16921,7 @@ export class ProjectResource extends ResourceBuilderBase } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -16931,7 +16931,7 @@ export class ProjectResource extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string): ProjectResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): ProjectResourcePromise { return new ProjectResourcePromise(this._withEnvironmentInternal(name, value)); } @@ -16945,7 +16945,7 @@ export class ProjectResource extends ResourceBuilderBase return new ProjectResource(result, this._client); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise { return new ProjectResourcePromise(this._withEnvironmentExpressionInternal(name, value)); } @@ -18290,11 +18290,11 @@ export class ProjectResourcePromise implements PromiseLike { } /** Sets an environment variable */ - withEnvironment(name: string, value: string): ProjectResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): ProjectResourcePromise { return new ProjectResourcePromise(this._promise.then(obj => obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise { return new ProjectResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -19044,7 +19044,7 @@ export class TestDatabaseResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -19054,7 +19054,7 @@ export class TestDatabaseResource extends ResourceBuilderBase obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestDatabaseResourcePromise { return new TestDatabaseResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -21241,7 +21241,7 @@ export class TestRedisResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -21251,7 +21251,7 @@ export class TestRedisResource extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string): TestRedisResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): TestRedisResourcePromise { return new TestRedisResourcePromise(this._promise.then(obj => obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestRedisResourcePromise { return new TestRedisResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -23732,7 +23732,7 @@ export class TestVaultResource extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -23742,7 +23742,7 @@ export class TestVaultResource extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string): TestVaultResourcePromise { + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): TestVaultResourcePromise { return new TestVaultResourcePromise(this._promise.then(obj => obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestVaultResourcePromise { return new TestVaultResourcePromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } @@ -27294,7 +27294,7 @@ export class ResourceWithEnvironment extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ResourceBuilderBase | ResourceBuilderBase | EndpointReference | EndpointReferenceExpression): Promise { const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -27304,7 +27304,7 @@ export class ResourceWithEnvironment extends ResourceBuilderBase obj.withEnvironment(name, value))); } - /** Adds an environment variable with a reference expression */ + /** Sets an environment variable from a reference expression */ withEnvironmentExpression(name: string, value: ReferenceExpression): ResourceWithEnvironmentPromise { return new ResourceWithEnvironmentPromise(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); } diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithOptionalStringCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithOptionalStringCapability.verified.txt index d33fa15b474..f2e501a7914 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithOptionalStringCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithOptionalStringCapability.verified.txt @@ -232,14 +232,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -251,6 +273,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -264,14 +296,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -283,6 +337,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithPersistenceCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithPersistenceCapability.verified.txt index 18d8b82372b..dc116508368 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithPersistenceCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithPersistenceCapability.verified.txt @@ -195,14 +195,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -214,6 +236,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -227,14 +259,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -246,6 +300,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -608,14 +672,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -627,6 +713,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -640,14 +736,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -659,6 +777,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1022,14 +1150,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1041,6 +1191,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1054,14 +1214,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1073,6 +1255,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithRedisSpecificCapability.verified.txt b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithRedisSpecificCapability.verified.txt index 257d61a8081..901afb2dbbe 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithRedisSpecificCapability.verified.txt +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/WithRedisSpecificCapability.verified.txt @@ -193,14 +193,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -212,6 +234,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -225,14 +257,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -244,6 +298,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -606,14 +670,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -625,6 +711,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -638,14 +734,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -657,6 +775,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1020,14 +1148,36 @@ IsDistributedApplication: false }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1039,6 +1189,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences, @@ -1052,14 +1212,36 @@ ] }, { - TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, - ClrType: IManifestExpressionProvider, + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExpressionValue, + ClrType: IExpressionValue, Category: Handle, IsInterface: true, IsReadOnly: false, IsResourceBuilder: false, IsDistributedApplicationBuilder: false, - IsDistributedApplication: false + IsDistributedApplication: false, + ImplementedInterfaces: [ + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, + ClrType: IValueProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + } + ] }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueProvider, @@ -1071,6 +1253,16 @@ IsDistributedApplicationBuilder: false, IsDistributedApplication: false }, + { + TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IManifestExpressionProvider, + ClrType: IManifestExpressionProvider, + Category: Handle, + IsInterface: true, + IsReadOnly: false, + IsResourceBuilder: false, + IsDistributedApplicationBuilder: false, + IsDistributedApplication: false + }, { TypeId: Aspire.Hosting/Aspire.Hosting.ApplicationModel.IValueWithReferences, ClrType: IValueWithReferences,