|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using Aspire.Cli.Commands;
namespace Aspire.Cli;
internal sealed class CliExecutionContext(DirectoryInfo workingDirectory, DirectoryInfo hivesDirectory, bool debugMode = false)
{
public DirectoryInfo WorkingDirectory { get; } = workingDirectory;
public DirectoryInfo HivesDirectory { get; } = hivesDirectory;
public bool DebugMode { get; } = debugMode;
private BaseCommand? _command;
/// <summary>
/// Gets or sets the currently executing command. Setting this property also signals the CommandSelected task.
/// </summary>
public BaseCommand? Command
{
get => _command;
set
{
_command = value;
if (value is not null)
{
CommandSelected.TrySetResult(value);
}
}
}
/// <summary>
/// TaskCompletionSource that is completed when a command is selected and set on this context.
/// </summary>
public TaskCompletionSource<BaseCommand> CommandSelected { get; } = new();
} |