File: ApplicationModel\IRequiredCommandValidator.cs
Web Access
Project: src\src\Aspire.Hosting\Aspire.Hosting.csproj (Aspire.Hosting)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics.CodeAnalysis;
 
namespace Aspire.Hosting.ApplicationModel;
 
/// <summary>
/// A service that validates required commands/executables are available on the local machine.
/// </summary>
/// <remarks>
/// This service coalesces validations so that the same command is only validated once,
/// even if multiple resources require it.
/// </remarks>
[Experimental("ASPIRECOMMAND001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public interface IRequiredCommandValidator
{
    /// <summary>
    /// Validates that a required command is available and meets any custom validation requirements.
    /// </summary>
    /// <param name="resource">The resource that requires the command.</param>
    /// <param name="annotation">The annotation describing the required command.</param>
    /// <param name="cancellationToken">A cancellation token.</param>
    /// <returns>A <see cref="RequiredCommandValidationResult"/> indicating whether validation succeeded.</returns>
    /// <remarks>
    /// Validations are coalesced per command. If the same command has already been validated,
    /// the cached result is used. If validation fails, a warning is logged but the resource
    /// is allowed to attempt to start.
    /// </remarks>
    Task<RequiredCommandValidationResult> ValidateAsync(IResource resource, RequiredCommandAnnotation annotation, CancellationToken cancellationToken);
}